Oracle PL/SQL 语法

来源:互联网 发布:如何禁止mac地址上网 编辑:程序博客网 时间:2024/05/16 23:44

一、如何创建存储过程:

1 创建不带参数的存储过程:

CREATE OR REPLACE PROCEDURE 存储过程名ISBEGINNULL;--此处做一些数据业务处理END;
IS 可以换成 AS 是一样的。BEGIN 和 END之间是存储过程内容,此处为NULL 什么也不做。

2 创建带参数的存储过程:

CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type) ASBEGINNULL;END;
in 表示 param1 是传入参数,out 反之;type 表示param 的 类型(Oracle中的合法类型)。

二、变量

1 声明变量

语法:变量名 类型(类型范围)

s_msg VARCHAR2(1000);e_integrity EXCEPTION;

2 为变量赋值

语法:变量名 := 值;

x := 1;s_msg := SUBSTR(a_str,1,6);s_str :='aaa'||'bbb';--字符串用单引号括起,连接符||

3 游标

/*生成游标并赋值*/CURSOR 游标名 IS   SELECT……  FROM……  WHERE……  GROUP BY……;
CURSOR cursor_2; --声明select username into cursor_2 from s_user where sex='m';--赋值

三、if /for /while

1 if

IF condition THEN         {...statements...}ELSIF condition THEN         {...statements...}ELSE         {...statements...}END IF;

2 for

(1) 循环遍历游标 create or replace procedure test() as     Cursor cursor1 is         select name from student;     name varchar(20);begin     for name in cursor1 LOOP         begin             dbms_output.putline(name);        end;     end LOOP;end test; 
(2) 循环遍历数组 create or replace procedure test(varArray in myPackage.TestArray) as     i number; begin    i := 1;    for i in 1..varArray.count LOOP        dbms_output.putline(i);    end LOOP;end test; 

3 while

create or replace procedure test(i in number) asbegin    while i < 10 LOOP        begin            i:= i + 1;        end;    end LOOP;end test;

四、常用函数

SUBSTRTO_CHARADD_MONTHS TO_DATE

五、错误处理

/*OTHERS表示除了声明外的任意错误。SQLERRM是系统内置变量保存了当前错误的详细信息。*/EXCEPTION    WHEN OTHERS THEN       vs_msg := 'ERROR IN xxxxxxxxxxx_p('||is_ym||'):'||SUBSTR(SQLERRM,1,500);   ROLLBACK;    --把当前错误记录进日志表。    INSERT INTO LOG_INFO(proc_name,error_info,op_date)    VALUES('xxxxxxxxxxx_p',vs_msg,SYSDATE);    COMMIT;    RETURN; END;


Raise 异常名

PL/SQL 程序段只被编译一次并且以可运行的形式储存,以降低响应时间。在网络环境中,这将减少网络流量和响应时间。

PL/SQL对大小写不敏感,所以,除了在字符串和字符中,小写字母和它对应的大写字母是等价的。




原创粉丝点击