欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle中的procedure编写和使用详解

程序员文章站 2024-01-24 13:27:46
1.创建/修改 create [or replace] procedure procedure_name [(parameter_list)] {is|as}...

1.创建/修改

create [or replace] procedure procedure_name
[(parameter_list)]
{is|as}
[local_declarations]
begin
executable_statements
[exception exception_handlers]
end [procedure_name];

a.parameter_list格式如下

 parameter_name1 [in | out | in out] type, parameter_name1 [in | out] type [,........]

in 是输入参数, 可以有默认值,默认值例子 emp_no in number:=7900

out 是输出参数,

b.as/is的区别

在视图(view)中只能用as不能用is

在游标(cursor)中只能用is不能用as

c.local_declarations格式如下:

    loacal_var1 type(limit);

如empname varchar2(20);

d.输出变量赋值

oracle 变量赋值有两种一种是直接 := 还有就是 select into

游标参数

outcur out basic_cursor:
 open outcur for select col1,col2 from tablename

e.示例

create or replace procedure putnum(p_date in date, p_year out varchar2) is 
 v_num number(8) := 1; 
 v_days number; 
 v_date date; 
begin 
 dbms_output.put_line('intput value:' || p_year); 
 v_num := 1; 
 v_days := 1; 
 v_days := to_number(to_char(p_date, 'dd')); -- to_char(sysdate-20,'dd') 
 for i in 1 .. v_days loop 
 v_date := to_date('2011/11/' || to_char(i), 'yyyy/mm/dd'); 
 --dbms_output.put_line(v_date); 
 end loop; 
 p_year := '2012'; 
end;

2.调用

[execute]|[call] procedure_name[(parameter,…n)]

在代码块 declare 的 begin/end 中不需要 [execute]|[call], 直接 procedure_name[(parameter,…n)]

其他外部程序需要 [execute]|[call]

在pl/sql中调用这个存储过程,采用了如下的代码:

begin
proc_insert('hello6',25,'2005-12-24');
commit;
end;

3.显示调试信息

a.存储过程中在必要的位置添加

dbms_output.put_line ('hello world!');

b.打开dbms_output

show serveroutput;
set serveroutput on;

c.测试我们的 procedure

复制代码 代码如下:

exec procedure_name

3.显示错误 show errors

如果在 exec 存储过程中提示出现错误,时刻使用"show errors"命令查看哪里出错了

4.查看

a.所有 procedure

select object_name,object_type,status from user_objects where object_type='procedure';

b.指定 procedure

select text from user_source where name = 'procedure_name';

5.删除

drop procedure procedure_name;

以上所述是小编给大家介绍的oracle中的procedure编写和使用详解,希望对大家有所帮助