oracle中的procedure编写和使用详解
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编写和使用详解,希望对大家有所帮助
上一篇: SQL2005 大数据量检索的分页
下一篇: spring 事物传播的一些易错点
推荐阅读
-
oracle中的procedure编写和使用详解
-
register_globals PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
-
详解Oracle序列和触发器的使用
-
Oracle中不使用索引和使用索引的效果比较分析
-
vue中keepAlive组件的作用和使用方法详解
-
详解Django中的ifequal和ifnotequal标签使用
-
Oracle中PL/SQL之常量和变量的定义、游标(光标)的使用
-
在SQL 2012中使用和Oracle 一样的序列
-
对layui中的onevent 和event的使用详解
-
Oracle中null的使用详解