Oracle存储过程语法

转载 2012年03月21日 10:32:19
 

1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字 --名字可加双引号也可不加
(
    参数1 IN NUMBER,
    参数2 IN VARCHAR2
) IS

变量1 INTEGER :=0;--内部变量声明及赋值
变量2 DATE;
BEGIN

END 存储过程名字

--或者

END;

/

//oracle公司推荐使用VARCHAR2,不使用VARCHAR
//存储过程传入参数的in可省略,默认就是in
//没有bool类型,用int代替

2.SELECT INTO STATEMENT
  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
  例子:
  BEGIN
  SELECT col1,col2 into 变量1,变量2 FROM tbl where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  ...

 

DECLARE sname VARCHAR2(20) :='jerry';
SELECT ename INTO sname FROM tbl WHERE empno=1;

 

3.IF 判断
if (p2=1) then
  dbms_output.put_line('111');
 elsif p2=2 then
  dbms_output.put_line('222');
 else
  dbms_output.put_line('else');
end if;

--如果输出的行太长
v_pos:=1;
WHILE v_pos<= LENGTH(SqlStr) LOOP
            DBMS_OUTPUT.PUT_LINE(SUBSTR(SqlStr, v_pos, 200));
            v_pos:= v_pos+ 200;
END LOOP;

 

4.while 循环
  WHILE V_TEST=1 LOOP
    BEGIN
      XXXX
    END;
  END LOOP;

5.变量赋值
  V_TEST := 123;

6.用for in 使用cursor
declare
 cursor cc is select * from tbl order by id;       
    ccrec cc%rowtype;
    begin        
      for ccrec in cc loop
          begin
            dbms_output.put_line(ccrec.ID||'-'||ccrec.Name);
          end;
      end loop; 
    end;

7.带参数的cursor
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
  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单步调试
本篇文章来源于 PHP资讯 原文链接:http://www.phpq.net/oracle/oracle-stored-procedure-syntax.html

 

9.CASE 语句

CASE selector
   WHEN value1 THEN action1;
   WHEN value2 THEN action2;
   WHEN value3 THEN action3;
   …..
   ELSE actionN;
END CASE;

CASE表达式

DECLARE
   temp VARCHAR2(10);
   v_num number;
BEGIN
   v_num := &i;
   temp := CASE v_num
     WHEN 0 THEN 'Zero'
      WHEN 1 THEN 'One'
     WHEN 2 THEN 'Two'
   ELSE
       NULL
   END;
   dbms_output.put_line('v_num = '||temp);
END;
/

CASE搜索语句

CASE
   WHEN (boolean_condition1) THEN action1;
   WHEN (boolean_condition2) THEN action2;
   WHEN (boolean_condition3) THEN action3;
   ……
   ELSE    actionN;
END CASE;

CASE搜索表达式 

DECLARE
   a number := 20;
   b number := -40;
   tmp varchar2(50);
BEGIN
   tmp := CASE
              WHEN (a>b) THEN 'A is greater than B'
              WHEN (a<b) THEN 'A is less than B'
              ELSE
              'A is equal to B'
              END;
   dbms_output.put_line(tmp);
END;
/

 

 或者用输出的方式调试

set serveroutput on;

declare 
   a varchar2(20);
begin
  select 用户名||密码 into a from login where rownum<2;
  dbms_output.put_line(a);
end;
/

相关文章推荐

oracle 存储过程的基本语法 及注意事项

oracle 存储过程的基本语法1.基本结构CREATE OR REPLACE PROCEDURE 存储过程名字(    参数1 IN NUMBER,    参数2 IN NUMBER) IS变量1 ...
  • hanxs
  • hanxs
  • 2011-03-07 13:45
  • 334

oracle存储过程语法

  • 2013-08-14 00:04
  • 68KB
  • 下载

Oracle存储过程基本语法

存储过程   1  CREATE OR REPLACE PROCEDURE 存储过程名   2  IS   3  BEGIN   4  NULL;   5 &#...

oracle存储过程语法

  • 2013-03-15 15:48
  • 68KB
  • 下载

Oracle存储过程语法

1 、判断语句:  if 比较式 then begin end; end if;  create or replace procedure test(x in number) is  begin  ...

oracle存储过程语法

  • 2012-12-06 11:47
  • 52KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)