[转]ORACLE 动态执行SQL语句
本文转自:http://zhaisx.iteye.com/blog/856472
Oracle 动态SQL
Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者。试验步骤如下:
1. DDL 和 DML
- /*** DDL ***/
- begin
- EXECUTE IMMEDIATE 'drop table temp_1';
- EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
- end;
- /*** DML ***/
- declare
- v_1 varchar2(8);
- v_2 varchar2(10);
- str varchar2(50);
- begin
- v_1:='测试人员';
- v_2:='北京';
- str := 'INSERT INTO test (name ,address) VALUES (:1, :2)';
- EXECUTE IMMEDIATE str USING v_1, v_2;
- commit;
- end;
2. 返回单条结果
- declare
- str varchar2(500);
- c_1 varchar2(10);
- r_1 test%rowtype;
- begin
- c_1:='测试人员';
- str:='select * from test where name=:c WHERE ROWNUM=1';
- execute immediate str into r_1 using c_1;
- DBMS_OUTPUT.PUT_LINE(R_1.NAME||R_1.ADDRESS);
- end ;
3. 返回结果集
- CREATE OR REPLACE package pkg_test as
- /* 定义ref cursor类型
- 不加return类型,为弱类型,允许动态sql查询,
- 否则为强类型,无法使用动态sql查询;
- */
- type myrctype is ref cursor;
- --函数申明
- function get(intID number) return myrctype;
- end pkg_test;
- /
- CREATE OR REPLACE package body pkg_test as
- --函数体
- function get(intID number) return myrctype is
- rc myrctype; --定义ref cursor变量
- sqlstr varchar2(500);
- begin
- if intID=0 then
- --静态测试,直接用select语句直接返回结果
- open rc for select id,name,sex,address,postcode,birthday from
- student;
- else
- --动态sql赋值,用:w_id来申明该变量从外部获得
- sqlstr := 'select id,name,sex,address,postcode,birthday from student
- where id=:w_id';
- --动态测试,用sqlstr字符串返回结果,用using关键词传递参数
- open rc for sqlstr using intid;
- end if;
- return rc;
- end get;
- end pkg_test;
- /
[转]ORACLE 动态执行SQL语句的更多相关文章
- ORACLE 动态执行SQL语句
本文转自 http://zhaisx.iteye.com/blog/856472 Oracle 动态SQL Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immedia ...
- 使用exec和sp_executesql动态执行SQL语句(转载)
当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是分页存储过程和执行搜索查询的SQL语句.一个比较通用的分页存储过程,可能需要传入表名, ...
- 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句
MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...
- 动态执行SQL语句,接收返回值
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...
- ORACLE 查询不走索引的原因分析,解决办法通过强制索引或动态执行SQL语句提高查询速度
(一)索引失效的原因分析: <>或者单独的>,<,(有时会用到,有时不会) 有时间范围查询:oracle 时间条件值范围越大就不走索引 like "%_" ...
- sp_executesql动态执行sql语句并将结果赋值给一变量
需求场景: 需动态拼接sql语句进行执行,并将执行的结果赋值给一指定变量. 样例代码如下: SELECT @tableName = TAB_NAME FROM dbo.NMR_BLYWBDY WHER ...
- 动态执行SQL语句
在实际制作过程中,需要动态的拼接SQL语句然后执行.具体代码如下: declare @columnName varchar(20),@tempName varchar(20) select @temp ...
- 自定义函数动态执行SQL语句
Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL 和 DML Sql代码 收藏代码 /*** DDL ***/ begin EX ...
- Oracle批量执行SQL语句
SQLServer的场合,用";"分割SQL语句即可正常执行. Oracle的场合,会报ORA-00911错误.Oracle中需要加上begin end才正确. Dim Sql A ...
随机推荐
- ENVI软件操作【数据显示操作——Overlay菜单操作】
一.注记层(Annotation) 注记层是ENVI的一个数据类型,它的后缀名是.ann.往往作为栅格数据层,矢量数据层.三维场景会绘图图表的附加数据叠加在上面,还可以作为镶嵌图像时候的裁剪线.注记数 ...
- jQuery cxScroll 间歇式无缝滚动
版本: jQuery v1.7+ jQuery cxScroll v1.2.2 注意事项: 内部会自动创建 prev 及 next 切换按钮,也可以在外部直接创建,若外部已创建或设置prevBtn: ...
- BOOtstrap源码分析之 tooltip、popover
一.tooltip(提示框) 源码文件: Tooltip.jsTooltip.scss 实现原理: 1.获取当前要显示tooltip的元素的定位信息(top.left.bottom.right.wid ...
- Spring MVC 处理模型数据(@ModelAttribute)
SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据. 直白来讲,上面这句话的意思就是:当有一个查询的请求, ...
- sql联合查询
联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用户名,密码) userid int username varchar(20) password ...
- ArcGIS中国工具2.2正式发布
ArcGIS中国工具2.2新功能 1. 2.0全面支持ArcGIS10.3 2. 全面修改成插件,原来部分是独立运行的EXE 3. 可以制作倾斜的矩形图框 4. 修改宗地(地块)左上角为第一个点,填写 ...
- [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 这个可以实现ImageView异步加载 ...
- Git 分支管理策略
分支管理策略 下面我们来说一下一般企业中开发一个项目的分支策略: 主分支 master 开发分支 develop 功能分支 feature 预发布分支 release bug 分支 fixbug 其 ...
- Failed to push selection: Read-only file system的解决方法
1.获得root权限:adb root 2.设置/system为可读写:adb remount 3.将hosts文件复制到PC:adb pull /system/usr/keylayout/mtk-k ...
- iOS开发之邓白氏编码申请流程
要申请企业证书,必须先申请邓白氏编码,在苹果网站有一个免费申请邓白氏编码的链接:https://developer.apple.com/program/enroll/dunsLookupForm.ac ...