Oracle存储过程详解
2015-12-02 16:12
609 查看
1、基本结构
2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
7、带参数的cursor
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 ;
相关文章推荐
- MySQL存储过程
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- ASP程序与SQL存储过程结合使用详解
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例