Oracle PL/SQL 语法

一、如何创建存储过程:

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

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

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

CREATE OR REPLACE PROCEDURE 存储过程名(param1 in type,param2 out type) 
AS
BEGIN
NULL;
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) as
begin
    while i < 10 LOOP
        begin
            i:= i + 1;
        end;
    end LOOP;
end test;

四、常用函数

SUBSTR
TO_CHAR
ADD_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对大小写不敏感,所以,除了在字符串和字符中,小写字母和它对应的大写字母是等价的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛克Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值