Oracle存储过程详细教程「建议收藏」

Oracle存储过程详细教程「建议收藏」

大家好,又见面了,我是你们的朋友全栈君。

Oracle存储过程详细教程 目录Oracle存储过程详细教程一 .创建存储过程语法二.输出案例三.调用存储过程3.1 声明declare关键字3.2不声明declare关键字3.3call四.带有参数的存储过程五.in,out参数问题六.异常写法七.循环7.1while 循环7.2for循环八.基本正删改查一 .创建存储过程语法代码语言:javascript代码运行次数:0运行复制create or replace procedure 存储过程名

as

begin

----------------------------

end;代码语言:javascript代码运行次数:0运行复制注:

在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;

在视图(VIEW)中只能用AS不能用IS;

在游标(CURSOR)中只能用IS不能用AS。二.输出案例代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo01

as

begin

dbms_output.put_line('hello word, my name is stored procedure');

end;as:关键字。

begin:关键字。

dbms_output.put_line(‘hello word, my name is stored procedure’); 输出内容。

end;关键字。

三.调用存储过程3.1 声明declare关键字代码语言:javascript代码运行次数:0运行复制declare

begin

myDemo01;

end;3.2不声明declare关键字代码语言:javascript代码运行次数:0运行复制begin

myDemo01; --在此处也可使用myDemo01();完成存储过程的调用

end;3.3call代码语言:javascript代码运行次数:0运行复制call myDemo01();--call 存储过程名可完成调用,注意括号不能少执行的结果如下所示:

四.带有参数的存储过程代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo02(name in varchar,age in int)

as

begin

dbms_output.put_line('name='||name||', age='||age);

end;注:在调用存储过程时,如果存储过程没有参数,调用时括号()可以不带。

五.in,out参数问题代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo04(name out varchar,age in int)

as

begin

dbms_output.put_line('age='||age);

select 'ex_sunqi' into name from dual;

end;

declare

name varchar(10);

age int;

begin

myDemo04(name=>name,age=>25);

dbms_output.put_line('name='||name);

end;注:in代表输入,out用于输出,参数默认类型是in类型。

执行的结果如下所示:

六.异常写法代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo03

as

age int;

begin

age:=1/0;

dbms_output.put_line(age);

--异常

exception when others then

dbms_output.put_line('error');

end;

call myDemo03();执行的结果如下所示:

七.循环7.1while 循环代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo5

as

n_count number := 0;

begin

while n_count < 5 loop

dbms_output.put_line(n_count);

n_count := n_count + 1;

end loop;

end;

begin

myDemo5;

end;执行的结果如下所示:

7.2for循环代码语言:javascript代码运行次数:0运行复制create or replace procedure myDemo06

as

begin

FOR USE in (select * from T_USER_INFO) loop

if (USE.id<3) then

dbms_output.put_line(USE.USER_NAME);

end if;

end loop;

end;

CALL myDemo06();

执行的结果如下所示:

八.基本正删改查代码语言:javascript代码运行次数:0运行复制create or replace procedure mydemo07(ID in int, user_name in varchar,pssword in varchar, created_date in DATE,created_by IN varchar,UPDATED_date IN DATE,UPDATED_by IN varchar,is_valid IN varchar)

as

begin

insert into T_USER_INFO VALUES(ID,user_name,pssword,created_date,created_by,UPDATED_date,UPDATED_by,is_valid);

--UPDATE T_USER_INFO t SET t.USER_NAME='sunqi' WHERE t.ID=ID ;

--DELETE T_USER_INFO t WHERE t.ID=ID ;

commit; --提交

end;

begin

mydemo07(3,'ex_sunqi','666666',SYSDATE,'ex_sunqi',SYSDATE,'ex_sunqi','Y');

end;执行的结果如下所示:

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160877.html原文链接:https://javaforall.cn

💎 相关推荐

社保卡需要交钱吗
365bet体育在线网站

社保卡需要交钱吗

📅 06-30 👁️ 1859
十款实用方便的日志分析工具
365bet体育在线网站

十款实用方便的日志分析工具

📅 07-04 👁️ 8567