Oracle存儲過程簡單實例-入門必讀

Oracle存儲過程簡單實例

/*不带任何参数存储过程(输出系统日期)*/
create or replace procedure output_date is
begin
dbms_output.put_line(sysdate);
end output_date;

/*带参数in和out的存储过程*/
create or replace procedure get_username(v_id in number,v_username out varchar2)
as
begin
  select username into v_username from tab_user where id = v_id; --变量赋值 
exception
when no_data_found then 
raise_application_error(-20001,'ID不存在!');
end get_username;

Oracle

存储过程的基本语法

 

Oracle

存储过程的基本语法

 

Oracle存儲過程基本語法


1. 基本结构

<pre name="code" class="html">CREATE OR REPLACE PROCEDURE 存储过程名字 ( 
    参数1 IN NUMBER,     
      参数2 IN NUMBER 
) AS 
变量1 INTEGER :=0; 
变量2 DATE; BEGIN 
END 存储过程名字 

 2. SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条   记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子:  

BEGIN 
  SELECT col1,col2 into 变量1,变量2 
FROM typestruct where xxx;   
EXCEPTION 
  WHEN NO_DATA_FOUND THEN       
xxxx;   
END; 

3、IF判斷

IF V_TEST=1 THEN
	BEGIN
		do someing
	END;
END IF;

4、WHILE循環

WHILE V_TEST=1 LOOP
	BEGIN
		XXX
	END;
END LOOP;
5、變量賦值

V_TEST := 123; 
6、用for in 使用cursor光標

……
 	IS
		CURSOR cur is select * from xxx;
	BEGIN
		FOR cur_result in cur LOOP
		BEGIN
			V_SUM :=cur_result.列名 1+cur_result 列名2
		END;
	END LOOP;
END
7、带参数的cursor 

CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=CID;
 	OPEN C_USER(變量);
	LOOP
FETCH  C_USER  INTO   V_NAME;
EXIT FETCH C_USER%NOTFOUND;
	do something 
END LOOP;
CLOSE C_USER;

8、用pl/sql developer debug 
  连接数据库后建立一个Test WINDOW 
  在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试 

9、PL/SQL中執行存儲過程

在sql*plus中:

declare

--必要的變量聲明

begin

     execute  yourprocudure(parameter1,parameter2,......);

end

 在SQL/PLUS中调用存储过程,显示结果:

 SQL>set serveoutput on    --打开输出   

SQL>var info1 number;     --输出1     

SQL>var info2 number;     --输出2     

SQL>declare   
          var1  varchar2(20);       --输入1             

var2  varchar2(20);     --输入2             

var3  varchar2(20);       --输入2             

BEGIN   
              pro(var1,var2,var3,:info1,:info2);             

END;            

SQL>print  info1;     

SQL>print  info2;

注:在EXECUTE IMMEDIATE STR语句是SQLPLUS中动态执行语句,它在执行中会自动提交,类似于DP中FORMS_DDL语句,在此语句中str是不能换行的,只能通过连接字符"||",或着在在换行时加上"-"连接字符。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值