[size=medium]存储过程包括3个部分,定义部分、执行部分、例外处理部分[/size]
使用前 先执行set serveroutput on;
[b]1、最简单的存储过程[/b]
或者
[b]2、带有定义部分的存储过程(v_str是定义的字符串类型的变量)[/b]
[b]3、带有例外处理部分的存储过程[/b]
[b]4、带名字但不带参数的存储过程[/b]
[b]5、带名字且带出入参数和传出参数的存储过程[/b]
调用该存储过程
[b]6、没有传出只有传入参数的存储过程[/b]
[b]7、一个返回值的函数[/b]
[b]8、多个返回值的函数[/b]
使用前 先执行set serveroutput on;
[b]1、最简单的存储过程[/b]
begin
null;
end;
/
或者
begin
DBMS_OUTPUT.PUT_LINE('This is First Prccedure!');
end;
/
[b]2、带有定义部分的存储过程(v_str是定义的字符串类型的变量)[/b]
declare
v_str varchar2(100) :='This is second procedure!';
begin
DBMS_OUTPUT.PUT_LINE(v_str);
end;
/
或者
declare
v_str varchar2(100) ;
begin
SELECT 'This is second procedure!' INTO v_str FROM DUAL;
DBMS_OUTPUT.PUT_LINE(v_str);
end;
/
[b]3、带有例外处理部分的存储过程[/b]
Declare
v_name varchar(2);
Begin
SELECT sname INTO v_name FROM student WHERE sid=&sid;
Exception
when NO_DATA_FOUND then
DBMS_OUTPUT.PUT_LINE('请输入正确的SID!');
End;
/
[b]4、带名字但不带参数的存储过程[/b]
create or replace procedure first_pro
is
begin
DBMS_OUTPUT.PUT_LINE('带名字但不带参数的存储过程!');
end;
执行存储过程
Exec first_pro();
call first_pro();
[b]5、带名字且带出入参数和传出参数的存储过程[/b]
create or replace procedure second_pro(p_sid in number, p_sname out varchar2,p_cid in out number)
is
begin
select sname, c_id into p_sname,p_cid from student where sid=p_sid;
end;
调用该存储过程
declare
v_name varchar2(20);
v_cid number;
begin
second_pro(2,v_name,v_cid);
dbms_output.put_line('v_name='||v_name);
dbms_output.put_line('v_cid='||v_cid);
end;
[b]6、没有传出只有传入参数的存储过程[/b]
create or replace procedure third_pro(p_sid in number,p_sname varchar2)
is
begin
update student set sname = p_sname where sid=p_sid;
End;
调用该存储过程
Exec third_pro(100,'Mary');
Call third_pro(100,'Lily');
[b]7、一个返回值的函数[/b]
create or replace function first_fun(p_sid number)
return varchar2
is v_name varchar2(20);
begin
select sname into v_sname from student where sid=p_sid;
return v_sname;
end;
调用
Select first_fun(100) from dual;
[b]8、多个返回值的函数[/b]
create or replace function first_fun(p_sid number,p_sname out varchar2)
return number
is v_cid number;
begin
select sname,c_id into p_sname,v_cid from student where sid=p_sid;
return v_cid;
end;
调用
declare
v_name varchar2(20);
v_cid number;
begin
v_cid:=first_fun(100,v_name);
dbms_output.put_line('v_name='||v_name);
dbms_output.put_line('v_cid='||v_cid);
end;