oracle中的procedure编写和使用详解
1.创建/修改
CREATE[ORREPLACE]PROCEDUREprocedure_name [(parameter_list)] {IS|AS} [local_declarations] BEGIN executable_statements [EXCEPTIONexception_handlers] END[procedure_name];
a.parameter_list格式如下
parameter_name1[in|out|inout]type,parameter_name1[in|out]type[,........]
in是输入参数,可以有默认值,默认值例子emp_noinnumber:=7900
out是输出参数,
b.AS/IS的区别
在视图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
c.local_declarations格式如下:
loacal_var1type(limit);
如empnamevarchar2(20);
d.输出变量赋值
oracle变量赋值有两种一种是直接:=还有就是selectinto
游标参数
outcurOUTBASIC_CURSOR: OPENoutcurFORSELECTcol1,col2FROMtablename
e.示例
createorreplaceprocedureputNum(P_Dateindate,P_yearoutvarchar2)is v_numnumber(8):=1; v_daysnumber; v_datedate; begin dbms_output.put_line('intputvalue:'||P_year); v_num:=1; v_days:=1; v_days:=to_number(to_char(P_Date,'dd'));--to_char(sysdate-20,'dd') foriin1..v_daysLoop v_date:=to_date('2011/11/'||to_char(i),'yyyy/MM/dd'); --dbms_output.put_line(v_date); endloop; 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('HelloWorld!');
b.打开DBMS_OUTPUT
showserveroutput; setserveroutputon;
c.测试我们的procedure
execprocedure_name
3.显示错误showerrors
如果在exec存储过程中提示出现错误,时刻使用"showerrors"命令查看哪里出错了
4.查看
a.所有procedure
selectobject_name,object_type,statusfromuser_objectswhereOBJECT_TYPE='PROCEDURE';
b.指定procedure
SELECTtextFROMuser_sourceWHERENAME='procedure_name';
5.删除
DROPPROCEDUREprocedure_name;
以上所述是小编给大家介绍的oracle中的procedure编写和使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!