大家好,又见面了,我是你们的朋友全栈君。
Oracle存储过程详细教程
目录- Oracle存储过程详细教程
- 一 .创建存储过程语法
- 二.输出案例
- 三.调用存储过程
- 3.1 声明declare关键字
- 3.2不声明declare关键字
- 3.3call
- 四.带有参数的存储过程
- 五.in,out参数问题
- 六.异常写法
- 七.循环
- 7.1while 循环
- 7.2for循环
- 八.基本正删改查
- 一 .创建存储过程语法
- 二.输出案例
- 三.调用存储过程
- 3.1 声明declare关键字
- 3.2不声明declare关键字
- 3.3call
- 四.带有参数的存储过程
- 五.in,out参数问题
- 六.异常写法
- 七.循环
- 7.1while 循环
- 7.2for循环
- 八.基本正删改查
一 .创建存储过程语法
代码语言:javascript复制create or replace procedure 存储过程名
as
begin
----------------------------
end;
代码语言:javascript复制注:
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
在视图(VIEW)中只能用AS不能用IS;
在游标(CURSOR)中只能用IS不能用AS。
二.输出案例
代码语言:javascript复制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复制declare
begin
myDemo01;
end;
3.2不声明declare关键字
代码语言:javascript复制begin
myDemo01; --在此处也可使用myDemo01();完成存储过程的调用
end;
3.3call
代码语言:javascript复制call myDemo01();--call 存储过程名可完成调用,注意括号不能少
执行的结果如下所示:
四.带有参数的存储过程
代码语言:javascript复制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复制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复制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复制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复制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复制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