ORACLE程序包
程序包
包主体/规范名字一样
包主体/规范中的对应参数必须类型及名字一样
只能使用强类型的REF游标
创建程序包规范
create or replace package my_pack
is
procedure find_emp_proc(eno emp.empno%type);
function find_emp_fun(eno emp.empno%type) return emp.ename%type;
end my_pack;
SQL> ed
SQL> /
Package created
调用函数
SQL> select my_pack.find_emp_fun(7788) from dual;
select my_pack.find_emp_fun(7788) from dual
ORA-04068: 已丢弃程序包 的当前状态
ORA-04067: 未执行,package body "SCOTT.MY_PACK" 不存在
ORA-06508: PL/SQL: 无法在调用之前找到程序单元
ORA-06512: 在line 1
执行存储过程
SQL> exec my_pack.find_emp_proc(7788);
begin my_pack.find_emp_proc(7788); end;
ORA-04068: 已丢弃程序包 的当前状态
ORA-04067: 未执行,package body "SCOTT.MY_PACK" 不存在
ORA-06508: PL/SQL: 无法在调用之前找到程序单元
ORA-06512: 在line 2
创建程序包主体
create or replace package body my_pack
is
empname emp.ename%type;
procedure find_emp_proc(eno emp.empno%type)
is
begin
select ename into empname from emp where empno=eno;
dbms_output.put_line(empname);
end;
function find_emp_fun(eno emp.empno%type) return emp.ename%type
is
begin
select ename into empname from emp where empno=eno;
&nb
相关文档:
oracle startup时 报错ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], [], [], [], [], [], [], []
原因可能是非法关机或掉电造成,以下是出现的问题及解决方法:
C:\Documents and Settings\Administrator>sqlplus
请输入用户名: /as sysdba
SQL> startup
ORA-01081: 无法启动已在运行的 ORACLE ......
Oracle提供的序号函数:
以emp表为例:
1: rownum 最简单的序号 但是在order by之前就确定值.
select rownum,t.* from emp t order by ename
行数
ROWNUM
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
1
11
7876
ADAMS
CLERK
7788
1987-5-23
1100
20
2
2
7499
ALLEN
SALESMAN
7698
......
http://tech.163.com/05/0701/10/1NIODMQS00091589.html
因为在PL/SQL 中并没有数组.
这是偶查资料找的范例和自己写的范例来解释如何在PL/SQL 中使用数组. 也许很多人已知道, 不过就是让不知道的朋友们了解一下吧。
----------------------
单维数组
------------------------
DECLARE
TYPE
emp_ssn_array IS TA ......
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
本案例具体创建如下:
create or replace directory exp_dir as '/tmp';
目录创建以后,就可以把读写权限授予特定用户 ......