PLSQL--动态SQL和存储过程、函数
1.8动态SQL
1.8.1动态sql的概念
本质上来说动态sql就是将符合sql语法的字符串当作sql来运行
动态sql相对于静态sql来说更灵活,并且可以突破一些PL/SQL对静态sql的限制
由于在编译时sql的全文还不确定,所以你可以使用动态sql构建灵活的,多用途的应用程序
1.动态sql的分类
对应DML/DDL/SELECT INTO 语句我们使用EXECUTE IMMEDIATE 语句来执行;
对于多行查询我们使用OPEN CURSOR FOR 语句来执行
1)EXECUTE IMMEDIATE ‘ dml语句/ddl语句 ‘
单行注释为-- 多行注释为 /内容/
2)OPEN 游标名 FOR 语句
只能打开REF cursor 类型的游标,后面跟随多行的查询语句
2.绑定变量
没有执行绑定变量前,2个语句是不同的,都是硬链接,需要占用2块内存空间
通过下面的例子我们可以发现,一样类似的语句由于传入的部门编号不同,被Oracle定义为2个不同的sql语句,拥有不同的sql id号,在share pool中2个sql各占一份空间,游标不能被共享,会造成硬解析。<