oracle中的procedure编写和使用详解

所属分类: 数据库 / oracle 阅读数: 1527
收藏 0 赞 0 分享

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编写和使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

VS2015连接Oracle数据库的详细步骤

这篇文章主要介绍了VS2015连接Oracle数据库的详细步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

常用的Oracle doc命令(收藏)

这篇文章主要介绍了常用的Oracle doc命令(收藏)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

ORACLE SQL语句优化技术要点解析

这篇文章主要介绍了ORACLE SQL语句优化技术的相关内容,小编觉得挺不错的,在这里分享给大家,需要的朋友可以参考下。
收藏 0 赞 0 分享

ORACLE多条件统计查询的简单方法

这篇文章主要介绍了ORACLE多条件统计查询的简单方法,具有一定参考价值。这里给大家分享下,希望对大家有所帮助。
收藏 0 赞 0 分享

ORACLE批量导入图片到BLOB字段代码示例

这篇文章主要介绍了ORACLE批量导入图片到BLOB字段代码示例,此代码示例是文章作者的项目源码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

PLSQL Developer登录的默认密码介绍

这篇文章主要介绍了PLSQL Developer登录的默认密码介绍,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Oracle数据行拆分多行方法示例

oracle数据库使用过程中,怎样将一行或者多行数据分割成需要的多行数据,本文我们就来看看具体方法,需要的朋友可以参考。
收藏 0 赞 0 分享

Oracle表空间不足的两种解决办法

这篇文章主要介绍了Oracle表空间不足的两种解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

巧妙解决Oracle NClob读写问题(经验分享)

下面小编就为大家带来一篇巧妙解决Oracle NClob读写问题(经验分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

oracle执行update语句时卡住问题分析及解决办法

这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值,需要的朋友可以了解。
收藏 0 赞 0 分享
查看更多