`
maziheng
  • 浏览: 57036 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

简单的存储过程、函数

阅读更多
存储过程包括3个部分,定义部分、执行部分、例外处理部分
使用前 先执行set serveroutput on;
1、最简单的存储过程
begin 
  		null; 
  	end; 
	  /

或者
 
begin
  		DBMS_OUTPUT.PUT_LINE('This is First Prccedure!');
	end;
	/

2、带有定义部分的存储过程(v_str是定义的字符串类型的变量)
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;
	/

3、带有例外处理部分的存储过程
 
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;
	/

4、带名字但不带参数的存储过程
create or replace procedure first_pro
is
begin
   DBMS_OUTPUT.PUT_LINE('带名字但不带参数的存储过程!');
end;
执行存储过程
Exec first_pro();
call first_pro();

5、带名字且带出入参数和传出参数的存储过程
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;

6、没有传出只有传入参数的存储过程
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');

7、一个返回值的函数
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;

8、多个返回值的函数
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;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics