PLSQL之动态SQL与异常
1.动态 SQL
动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句
编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行
DDL 语句命令和会话控制语句不能在 PL/SQL 中直接使用,但是可以通过动态 SQL 来执行
执行动态 SQL 的语法:
EXECUTE IMMEDIATE dynamic_sql_string
[INTO define_variable_list]
[USING bind_argument_list];
execute immediate 字符串参数 [into] 变量 using 参数
immediate后面跟的参数:它是一个字符串类型的sql语句,或者字符串类型的plsql代码
into 变量:是把sql语句的执行结果保存到变量中
using 参数:传给sql语句的参数
2.异常
1.异常概述
在运行程序时出现的错误叫做异常
发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分
declare
声明部分;
begin
plsql代码块;
exception
异常处理部分;
end;
ORACLE异常分为两种类型:系统异常、自定义异常。其中系统异常又分为:预定义异常和非预定义异常。
2.预定义异常
就是Oracle已经事先定好的异常编号与异常名字。
3.非预定义异常
ORACLE为它定义了错误编号,但没有定义异常名字。我们使用的时候,先声名一个异常名,通过伪过程PRAGMA EXCEPTION_INIT,将异常名与错误号关联起来。
如:
pragma exception_init(自定义的异常,编号);
insert into emp(empno,deptno) values(7369,10);
declare
--声名异常变量
myexc exception;
--绑定异常
pragma exception_init(myexc,-00001);
begin
begin
insert into emp(empno,deptno) values(7369,10);
-- commit;
exception
when myexc then
-- rollback;
dbms_output.put_line('违反唯一约束');
end;
dbms_output.put_line('-----');
end;
4.自定义异常
程序员从业务角度出发,制定的一些规则和限制。
异常名称 exception;
抛出异常:
raise 异常名称
declare
--定义一个自己的异常
myexcp exception;
--声名两个变量接收两个数
m number(10):=&m;
n number(10):=&n;
begin
if n=0 then
dbms_output.put_line('除数不能为零');
raise myexcp;
end if;
dbms_output.put_line(m/n);
end;
PLSQL之动态SQL与异常相关推荐
- PLSQL——动态SQL、异常(预定义异常、非预定义异常、自定义异常)、引发应用程序错误
1.动态 SQL 动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句 编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句.对语句进行语法分析并执行 DDL 语句命令和会话控制语 ...
- PLSql 动态SQL应用理解
PLSql 动态SQL应用 一.知识点 (1)表类型 表类型变量table 语法如下: type 表类型 is table of 类型 index by binary_integer; 表变量名 表类 ...
- PLSQL 动态SQL
在PL/SQL程序开发中,可以使用DML语句和事务控制语句,但是还有很多语句(比如DDL语句)不能直接在PL/SQL中执行. 这些语句可以使用动态SQL来实现. 语法格式:动态SQLEXECUTE I ...
- Oracle 动态游标 PL/SQL 动态SQL语句 open for [using] 语句
PL/SQL:open for [using] 语句 2017年07月19日 09:52:55 学孩儿无牙哭做粥 阅读数:681 标签: oracleSQLPLSQL 更多 个人分类: ORACLES ...
- Oracle 动态SQL语句
Oracle 动态SQL语句 EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...
- PL/SQL -- 动态SQL调用包中函数或过程
动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...
- MyBatis-11MyBatis动态SQL之【if】
动态SQL概述 if概述 在WHERE条件中使用if 需求 1.UserMapper接口中增加接口方法 2.UserMapper.xml配置动态SQL 3.单元测试 在UPDATE条件中使用if 需求 ...
- oracle 动态sql列转行_Oracle 行转列 动态出转换的列
10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后,因为pivot的用法中,正常情况下,我们需要转出多少个列,都得在我们的sql中完完整整地写出,而不能直接在里面写个查询来 ...
- 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.InvalidOperationExcep ...
最新文章
- vue更新data中的数据页面不渲染_vue更新obj类data的属性无效,页面data没刷新解决方法vue.set...
- 智源新闻 | 麻省理工学院教授Max Tegmark报告交流会在北京举行
- 12年后,人工智能和人类会是什么样?这是900位专家的看法|报告
- 创建并运行HelloWorld Java项目和类
- Wannafly挑战赛21 E 未来城市规划
- bzoj2396:神奇的矩阵
- Linux确定命令的执行时长,Linux 历史命令显示执行时间
- spring中AOP动态代理的两种方式
- JS全选功能代码优化
- vue2.0项目结构和打包发布
- 复制网页的同时可以把图片复制下来_用华为手机“智慧识屏”功能识别图片中文字的方法...
- js怎么select 选中的值
- Android Service 详解一:概述
- C# int转string 每三位加一个逗号
- Python3 验证二代身份证号码信息
- Charles做弱网测试
- 如何用Word打开PDF文件?
- 微信公众号之免登陆快速入门
- 搭建网站的六个基本步骤流程(教程解说)
- 简述数据可视化制作流程
热门文章
- mysql如何实现两个数据库数据结构实时同步?
- 配置jdk,jre环境变量
- The elements of programming style,好程序的要素
- li 图片错位 浮动_css浮动导致错位怎么解决?
- 简单解析JavaScript的默认事件及如何阻止默认事件
- 海马手机助手怎么开启本地服务器,深度操作系统 V20(1003)内测版招募:新增手机助手,支持安卓和 iOS 端,管理手机应用、文件...
- 360路由器刷openwrt、不死uboot、双系统 、wifi中继
- shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)
- 【数据库篇】Redis知识点
- 哪个学校考研考python_考研,哪个学校最好考?