欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

如何编写和使用Oracle中的procedure

来源:本站整理 作者:佚名 时间:2017-04-27 TAG: 我要投稿

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;
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载