目录
一、创建存储过程语法
二、输出案例
三、调用存储过程
3.1、声明declare关键字
3.2、不声明declare关键字
3.3、call
四、带有参数的存储过程
五、in,on参数问题
六、异常写法
七、循环
7.1、while循环
7.2、for循环
八、基本增删改查
一、创建存储过程语法
create or replace procedure 存储过程名
is
begin
----------------------------
end;
二、输出案例
create or replace procedure myDemo01
is
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.3、call
call myDemo01();--call 存储过程名可完成调用,注意括号不能少
四、带有参数的存储过程
create or replace procedure myDemo02(name in varchar,age in int)
is
begin
dbms_output.put_line('name='||name||', age='||age);
end;
注:在调用存储过程时,如果存储过程没有参数,调用时括号()可以不带。
五、in,on参数问题
create or replace procedure myDemo04(name out varchar,age in int)
is
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
is
age int;
begin
age:=1/0;
dbms_output.put_line(age);
--异常
exception when others then
dbms_output.put_line('error');
end;
call myDemo03();
七、循环
7.1、while循环
create or replace procedure myDemo5
is
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.2、for循环
create or replace procedure myDemo06
is
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)
is
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;