Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
来源:互联网 发布:淘宝快捷回复短语大全 编辑:程序博客网 时间:2024/06/05 21:07
虽然之前写了不少Oracle上的SQL语句,但是没有抽出时间对Oracle进行一个系统的学习,实践固然重要,但没有一个理论上的规范学习与理解,在实践中就不能举一反三,就不能写出高规范高质量的SQL语句。
-- PL/SQL 基本写法-- 说明:声明、异常处理部分为可选,视具体程序而定-- 博客记录点滴 http://blog.csdn.net/ls_man 转载注明出处DECLARE -- 声明变量 A INTEGER;-- 只声明 B FLOAT := 0;-- 带赋值的声明 C FLOAT;BEGIN -- 可执行语句开始 DBMS_OUTPUT.put_line('开始执行可执行语句块![http://blog.csdn.net/ls_man转载注明出处]'); A := 1.5; DBMS_OUTPUT.put_line('A=' || A); DBMS_OUTPUT.put_line('B=' || B); C := A / B; -- 会引发分母为0的异常,下面的两条输出语句将无法执行 DBMS_OUTPUT.put_line('C=' || C); DBMS_OUTPUT.put_line('可执行语句块执行完毕![http://blog.csdn.net/ls_man转载注明出处]');EXCEPTION -- 异常处理 WHEN OTHERS THEN DBMS_OUTPUT.put_line('[PL/SQL 基本写法]中出现异常,错误代码:ORA'||sqlcode);END; -- 可执行语句结束/ -- 该符号表示执行这段PL/SQL代码
执行后的输出:
开始执行可执行语句块![http://blog.csdn.net/ls_man转载注明出处]A=2B=0[PL/SQL 基本写法]中出现异常,错误代码:ORA-1476
我们再看一下如何通过异常处理实现数据库事务:
-- PL/SQL 事务-- 说明:有多条修改数据的语句执行,如果其中某条出错,之前的更改也不会记入数据库-- 博客记录点滴 http://blog.csdn.net/ls_man 转载注明出处-- 1.先创建一个测试表DECLARE V_SQL_DROP_TABLE VARCHAR2(50) := 'DROP TABLE MY_TEST'; V_SQL_CREATE_TABLE VARCHAR2(100) := 'CREATE TABLE MY_TEST(NOT_NULL VARCHAR2(20) NOT NULL, ONLY_INT INTEGER)';BEGIN EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 创建测试表EXCEPTION -- 如果表已存在,则会引发异常 WHEN OTHERS THEN EXECUTE IMMEDIATE V_SQL_DROP_TABLE; -- 先删除 EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 再创建END;/--2.用我们刚创建的测试表进行测试DECLARE V_COUNT INTEGER; -- 表中记录的行数 V_INT_VAL MY_TEST.ONLY_INT%TYPE; -- 使用%TYPE关键字参照某表某字段类型声明变量BEGIN V_INT_VAL := 123456; -- 插入一条正确的数据 INSERT INTO MY_TEST VALUES ('TEST_SUCCESS', V_INT_VAL); -- 查询条数为1条,我们发现插入成功了 SELECT COUNT(*) INTO V_COUNT FROM MY_TEST; DBMS_OUTPUT.put_line('MY_TEST表中有' || V_COUNT || '条记录'); -- 插入一条错误的数据,因为第二个字段为int型,插入字符数据肯定会出错 INSERT INTO MY_TEST VALUES ('TEST_FAIL', 'ABC'); -- 最后提交更改 COMMIT;EXCEPTION -- 异常处理 WHEN OTHERS THEN ROLLBACK; -- 异常时回滚,这样第一次插入的正确数据也不会保存到数据库 DBMS_OUTPUT.put_line('[PL/SQL 事务]中出现异常,错误代码:ORA' || sqlcode); -- 我们验证一下表里的数据为0条 SELECT COUNT(*) INTO V_COUNT FROM MY_TEST; DBMS_OUTPUT.put_line('回滚后,MY_TEST表中有' || V_COUNT || '条记录');END; -- 可执行语句结束/ -- 该符号表示执行这段PL/SQL代码
执行后的输出:
MY_TEST表中有1条记录[PL/SQL 事务]中出现异常,错误代码:ORA-1722回滚后,MY_TEST表中有0条记录
- 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
【End】
更多精彩博文请移步博客主页:http://blog.csdn.net/ls_man
更多精彩分享请收听博主腾讯微博@ls_man:http://t.qq.com/ls_man
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- PL/SQL的基本写法、BEGIN_END块结构及简单的事务实现
- MySQL开启事务的sql块的写法!
- 事务的基本写法
- PL/SQL的块结构
- SQL中的事务的写法代码
- Oracle_PL/SQL
- 事务存储结构的实现
- 存储过程最简单的块结构
- PL/SQL 块的结构和实例
- pl/sql块的基本语法
- 关于ListFragment的基本写法及注意事项
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- MySQL事务及事务的实现
- PL/SQL 的基本结构
- OpenCV 视频人数统计研究
- smarty ajax 输出
- js 弹出框只弹一次
- 回溯法----- 解数独游戏(1)
- 每天一个linux命令(50):crontab命令
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Gost算法
- orcale:imp非常慢的问题
- Oracle数据库递归查询的理解
- Shell编程入门
- 每天一个linux命令(51):lsof命令
- NS2教程
- 回溯法------ 解数独游戏(2)
- Scale up和Scale out