好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

oracle中的procedure编写和使用详解

1.创建/修改

?

1

2

3

4

5

6

7

8

CREATE [ OR REPLACE ] PROCEDURE procedure_name

[(parameter_list)]

{ IS | AS }

[local_declarations]

BEGIN

executable_statements

[EXCEPTION exception_handlers]

END [procedure_name];

a.parameter_list格式如下

?

1

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

游标参数

?

1

2

outcur OUT BASIC_CURSOR:

  OPEN outcur FOR SELECT col1,col2 FROM tablename

e.示例

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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.调用

?

1

[ EXECUTE ]|[CALL] procedure_name[(parameter,…n)]

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

其他外部程序需要 [EXECUTE]|[CALL]

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

?

1

2

3

4

begin

Proc_Insert( 'hello6' ,25, '2005-12-24' );

commit ;

end ;

3.显示调试信息

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

?

1

DBMS_OUTPUT.put_line ( 'Hello World!' );

b.打开DBMS_OUTPUT

?

1

2

show serveroutput;

set serveroutput on ;

c.测试我们的 procedure

 

复制代码 代码如下:


exec procedure_name

 

3.显示错误 show errors

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

4.查看

a.所有 procedure

?

1

select object_name,object_type,status from user_objects where OBJECT_TYPE= 'PROCEDURE' ;

b.指定 procedure

?

1

SELECT text FROM user_source WHERE NAME = 'procedure_name' ;

5.删除

?

1

DROP PROCEDURE procedure_name;

以上所述是小编给大家介绍的oracle中的procedure编写和使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://blog.sina.com.cn/s/blog_ad0672d60102vv61.html

查看更多关于oracle中的procedure编写和使用详解的详细内容...

  阅读:28次