1. 首页 > 电脑手机 >

oracle存储过程_oracle存储过程游标的使用

1 CREATE OR REPLACE PROCEDURE 存储过程名

oracle存储过程_oracle存储过程游标的使用oracle存储过程_oracle存储过程游标的使用


2 IS

3 BEGIN

4 NULL;

5 END;

行1:

CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

行2:

IS关键词表明后面将跟随一个PL/SQL体。

行3:

BEGIN关键词表明PL/SQL体的开始。

行4:

NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;

行5:

END关键词表明PL/SQL体的结束.

存储过程创建语法:

create or replace procedure 存储过程名(param1 in type,param2 out type)

as

变量1 类型(值范围); --vs_msgVARCHAR2(4000);

变量2 类型(值范围);

Begin

Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then

Select 列名 into 变量2 from 表A where列名=param1;

Dbms_output。Put_line(‘打印信息’);

Elsif (判断条件) then

Dbms_output。Put_line(‘打印信息’);

Else

Raise 异常名(NO_DATA_FOUND);

End if;

Exception

When others then

Rollback;

End;

CREATE OR REPLACE PROCEDURE 名称 (入参名1 in 类型1.....入参名n in 类型n) as 或者 is

begin

过程体

EXCEPTION

WHEN OTHERS THEN

异常处理,可以省略

end

create or replace procedure (xxx)

is

xx

begin

xxx

end;

/这个问题有人问过了,你可以搜一下的

给你示例你参考下:

----------------------------建立存储过程:

CREATE OR REPLACE PROCEDURE P_name--存储过程名字

(i_var in int, --输入参数1

o_var OUT varchar2 --输出参数1

)IS

v_STR VARCHAR2(200); --定义存储过程内部的局部变量

BEGIN

--下面是存储过程的主体实现部分

v_STR := i_var;

dbms_output.put_line(v_STR);

o_var := v_STR;

exception--错误异常处理部分

when others then

dbms_output.put_line(sqlerrm);--打印错误信息

END P_name;

-----------------------------------调用存储过程示例:

declare

v_in int;

v_out varchar2(50);

begin

v_in :=100;

P_name (v_in,v_out); --调用存储过程P_name

dbms_output.put_line('存储过程输入结果为:'||v_out);

exception--错误异常处理部分

when others then

dbms_output.put_line(sqlerrm);--打印错误信息

end;

你首先要了解存储过程包括哪些模块,哪些是必备的,哪些是可选的.

另外呢,如果有条件的话,最好能找一些模板看看别人是怎么写的,再结合你们公司的实际情况,做一些适当的调整.

例如create or replace procedure +过程名字(变量名 in,数据类型,变量名 out 数据类型)等

declare

变量 类型

begin

过程体

exception

end

等最好有些实例,可以先模仿着写一写

等熟练之后呢,再自己按照自己的思路去写

create or replace procedure A(

a in varchar,

b in varchar

) is

c number := 0;

begin

---具体内容

commit;

end A;

存储过程就是可以把你无法用一句SQL实现的复杂逻辑封装到一个程序包里,可以通过传入不同参数得到不同的执行结果,可重复调用执行!

面向对象,封装,说白了就是这样的

就是你写的语句要经过储存然后才能读出来啊!

方法/步骤

首先在PL/SQL的左侧资源栏中展开Procedures项(图中位置1),然后再其上面的搜索框中(图中位置2)输入存过名称的关键词,按回车键搜索要调试的存过,不停的回车,直到找到想要调试的存过。

找到想要调试的存过,左键单击选中该存过(图中位置1),然后右键单击该存过,从弹出菜单中选择“Test”项(图中位置2)。

单击“Test”后,PL\SQL会打开调试界面,图中位置1的按钮就是开始调试的按钮,在调试之前要填写存过的参数,位置2就是填写参数的地方,如果有多个参数,会有多行参数框,按参数名填写相应的参数即可。

填写完参数,单击开始调试按钮后,调试的界面会发生一些变化。图中位置1的变化,说明存过已经处于执行状态,别人不能再编译或者执行。位置2的按钮就是执行按钮,单击这个按钮存过会执行完成或者遇到bug跳出,否则是不会停下来的,调试时不会用这个按钮的。位置3的按钮才是关键——单步执行,就是让代码一行一行的执行,位置4的按钮是跳出单步执行,等待下一个指令。

单击“单步执行”,存过开始单步执行。界面中每一次执行的代码会高亮显示(图中位置1),如果想要看某个变量具体的值,就在位置2的地方输入该变量名,然后变量的值会显示在位置3的地方。

调试的时候,每一次单步执行的时候要记一下执行代码的行数,图中位置3的数字就是当前执行代码的行数,就是第几行。如果过程单步执行到某行后,再单步执行的时候,存过就退出,那么错误就在该行的下一行。

代码执行到24行,在往下执行时,直接转到exception的地方,也就是异常处理的部分。

这说明我们代码中的错误在24和25行上,我们打开存过,浏览到24行和25行附近,发现25行和24行使用了两个变量,记住那两个变量。重新开始调试过程。

单步的执行时候把刚才那两个变量名填写到变量查看框,一边观察变量值变化,一边单步执行,执行到24行的时候,发现一个变量已经有值了,而另一个变量的值为null。错误原因明朗了吧?就是变量没有赋值或者初始话,给该变量赋值后存过就不报错了。

SELECT a.owner,

a.segment_name,

b.OBJECT_NAME -- 存储过程名

From dba_segments a,

DBA_OBJECTS b

WHERE a.tablespace_name = '表空间名称'

and trim(a.owner) = trim(b.OWNER)

and b.OBJECT_TYPE = 'PROCEDURE' --对象类型:存储过程

一般查看的时候就用owner.OBJECT_NAME就是完整存储过程名

select text from user_source where type='PROCEDURE' and name='PROCEDURE_NAME';

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息