Oracle存储过程详解

1、基本结构
CREATE [
OR REPLACE ] PROCEDURE 存储过程名字 (
	argument1 [ mode1 ] datatype1,
	argument2 [ mode2 ] datatype2,
	…
) IS 
变量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
      --异常处理,在业务需要时可以<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px;">Rollback</span>;
  END;
  ...
3、IF 判断
IF V_TEST=1 THEN
    BEGIN 
       do something
    END;
  END IF;
IF 条件1 THEN
	-- 表达式1
ELSIF 条件2 THEN
	-- 表达式2
	...
END IF;
4、 while 循环
WHILE i < 10 LOOP
BEGIN
	i := i + 1 ; -- 业务处理
END ;
END LOOP ;
5、变量赋值
V_TEST := 123; 
6、用for in 使用游标cursor
... 
IS 
CURSOR cur IS SELECT * FROM 表名;
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 (条件1 NUMBER) IS SELECT * FROM 表名 WHERE 条件列1 = 条件1;

OPEN C_USER (变量值);

LOOP FETCH C_USER INTO V_NAME;

EXIT FETCH C_USER % NOTFOUND;

-- 处理逻辑
END LOOP;

CLOSE C_USER;
8、异常处理
...
BEGIN
	...
	EXCEPTION -- 下面所有处理都为可选
		WHEN NO_DATA_FOUND THEN
			处理1; -- 未查找到数据异常处理
		WHEN ACCESS_INTO_NULL THEN
			处理2; -- 为定义对象
		...
		WHEN OTHERS THEN
			<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px;">Rollback; -- </span>其他异常处理,此处为事例
END ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值