大家好,又见面了,我是你们的朋友全栈君。
Oracle存储过程详细教程
点关注不迷路,欢迎再访!
精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。
目录
一 .创建存储过程语法
create or replace procedure 存储过程名
as
begin
----------------------------
end;
注:
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
在视图(VIEW)中只能用AS不能用IS;
在游标(CURSOR)中只能用IS不能用AS。
二.输出案例
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关键字
declare
begin
myDemo01;
end;
3.2不声明declare关键字
begin
myDemo01; --在此处也可使用myDemo01();完成存储过程的调用
end;
3.3call
call myDemo01();--call 存储过程名可完成调用,注意括号不能少
执行的结果如下所示:
四.带有参数的存储过程
create or replace procedure myDemo02(name in varchar,age in int)
as
begin
dbms_output.put_line('name='||name||', age='||age);
end;
注:在调用存储过程时,如果存储过程没有参数,调用时括号()可以不带。
五.in,out参数问题
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类型。
执行的结果如下所示:
六.异常写法
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 循环
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循环
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();
执行的结果如下所示:
八.基本正删改查
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;
执行的结果如下所示:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160877.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...