oracle中的procedure编写和使用详解

前端之家收集整理的这篇文章主要介绍了oracle中的procedure编写和使用详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.创建/修改

sql;"> CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_list)] {IS|AS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers] END [procedure_name]; @H_404_6@

a.parameter_list格式如下

sql;"> parameter_name1 [in | out | in out] type,parameter_name1 [in | out] type [,........] @H_404_6@

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

游标参数

sql;"> outcur OUT BASIC_CURSOR: OPEN outcur FOR SELECT col1,col2 FROM tablename @H_404_6@

e.示例

sql;"> 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; @H_404_6@

2.调用

sql;"> [EXECUTE]|[CALL] procedure_name[(parameter,…n)] @H_404_6@

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

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

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

sql;"> begin Proc_Insert('hello6',25,'2005-12-24'); commit; end; @H_404_6@

3.显示调试信息

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

sql;"> DBMS_OUTPUT.put_line ('Hello World!'); @H_404_6@

b.打开DBMS_OUTPUT

sql;"> show serveroutput; set serveroutput on; @H_404_6@

c.测试我们的 procedure

代码如下:@H_404_6@
exec procedure_name
@H_404_6@

3.显示错误 show errors

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

4.查看

a.所有 procedure

sql;"> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE'; @H_404_6@

b.指定 procedure

sql;"> SELECT text FROM user_source WHERE NAME = 'procedure_name'; @H_404_6@

5.删除

sql;"> DROP PROCEDURE procedure_name; @H_404_6@

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

原文链接:https://www.f2er.com/oracle/64956.html

猜你在找的Oracle相关文章