简单的存储过程、函数

[size=medium]存储过程包括3个部分,定义部分、执行部分、例外处理部分[/size]
使用前 先执行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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值