本文转自:http://zhaisx.iteye.com/blog/856472

Oracle 动态SQL
Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者。试验步骤如下:

1. DDL 和 DML

  1. /*** DDL ***/
  2. begin
  3. EXECUTE IMMEDIATE 'drop table temp_1';
  4. EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
  5. end;
  6. /*** DML ***/
  7. declare
  8. v_1 varchar2(8);
  9. v_2 varchar2(10);
  10. str varchar2(50);
  11. begin
  12. v_1:='测试人员';
  13. v_2:='北京';
  14. str := 'INSERT INTO test (name ,address) VALUES (:1, :2)';
  15. EXECUTE IMMEDIATE str USING v_1, v_2;
  16. commit;
  17. end;

2. 返回单条结果

  1. declare
  2. str varchar2(500);
  3. c_1 varchar2(10);
  4. r_1 test%rowtype;
  5. begin
  6. c_1:='测试人员';
  7. str:='select * from test where name=:c WHERE ROWNUM=1';
  8. execute immediate str into r_1 using c_1;
  9. DBMS_OUTPUT.PUT_LINE(R_1.NAME||R_1.ADDRESS);
  10. end ;

3. 返回结果集

    1. CREATE OR REPLACE package pkg_test as
    2. /* 定义ref cursor类型
    3. 不加return类型,为弱类型,允许动态sql查询,
    4. 否则为强类型,无法使用动态sql查询;
    5. */
    6. type myrctype is ref cursor;
    7. --函数申明
    8. function get(intID number) return myrctype;
    9. end pkg_test;
    10. /
    11. CREATE OR REPLACE package body pkg_test as
    12. --函数体
    13. function get(intID number) return myrctype is
    14. rc myrctype; --定义ref cursor变量
    15. sqlstr varchar2(500);
    16. begin
    17. if intID=0 then
    18. --静态测试,直接用select语句直接返回结果
    19. open rc for select id,name,sex,address,postcode,birthday from
    20. student;
    21. else
    22. --动态sql赋值,用:w_id来申明该变量从外部获得
    23. sqlstr := 'select id,name,sex,address,postcode,birthday from student
    24. where id=:w_id';
    25. --动态测试,用sqlstr字符串返回结果,用using关键词传递参数
    26. open rc for sqlstr using intid;
    27. end if;
    28. return rc;
    29. end get;
    30. end pkg_test;
    31. /

[转]ORACLE 动态执行SQL语句的更多相关文章

  1. ORACLE 动态执行SQL语句

    本文转自 http://zhaisx.iteye.com/blog/856472 Oracle 动态SQL Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immedia ...

  2. 使用exec和sp_executesql动态执行SQL语句(转载)

    当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是分页存储过程和执行搜索查询的SQL语句.一个比较通用的分页存储过程,可能需要传入表名, ...

  3. 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...

  4. 动态执行SQL语句,接收返回值

    一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...

  5. ORACLE 查询不走索引的原因分析,解决办法通过强制索引或动态执行SQL语句提高查询速度

    (一)索引失效的原因分析: <>或者单独的>,<,(有时会用到,有时不会) 有时间范围查询:oracle 时间条件值范围越大就不走索引 like "%_" ...

  6. sp_executesql动态执行sql语句并将结果赋值给一变量

    需求场景: 需动态拼接sql语句进行执行,并将执行的结果赋值给一指定变量. 样例代码如下: SELECT @tableName = TAB_NAME FROM dbo.NMR_BLYWBDY WHER ...

  7. 动态执行SQL语句

    在实际制作过程中,需要动态的拼接SQL语句然后执行.具体代码如下: declare @columnName varchar(20),@tempName varchar(20) select @temp ...

  8. 自定义函数动态执行SQL语句

    Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL 和 DML Sql代码 收藏代码 /*** DDL ***/ begin EX ...

  9. Oracle批量执行SQL语句

    SQLServer的场合,用";"分割SQL语句即可正常执行. Oracle的场合,会报ORA-00911错误.Oracle中需要加上begin end才正确. Dim Sql A ...

随机推荐

  1. Sending e-mail

    E-mail functionality uses the Apache Commons Email library under the hood. You can use theplay.libs. ...

  2. Ionic 今天发布了Windows 桌面版的IDE Ionic Lab

    Ionic简介: Ionic 是一个强大的 HTML5 应用程序开发框架,号称 Advanced HTML5 Hybrid Mobile AppFramework 是 AngularJS 移动端解决方 ...

  3. 15款美丽的设备模板,帮助展示你的 APP

    有什么更好的方式来显示您的应用程序的外观和感觉呢?你看了这些设计示例之后就会有灵感了.无论是在 iPhone,iPad,Android,还是在桌面应用程序或网站,这些设计都增加了一些视觉上的吸引力,并 ...

  4. sizzle源码分析 (2)ID 类 tag querySelectorAll 快速匹配

    不是所有的选择器都需要去分词,生成相应的匹配函数,这样流程比较复杂,当浏览器具备原生的方法去匹配元素是,没有理由不优先匹配,下面看看进入Sizzle后,它是怎么优先匹配这些元素的: function ...

  5. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  6. vs2010 未能将脚本调试器附加到计算机上的进程。已附加了一个调试器

    图片: 上周不小心升级了IE10,今天,VS2010报:未能将脚本调试器附加到计算机XXX上的进程iexplore.exe . 已附加了一个调试器”.启动调试失败. 到网上查找解决办法,最后用这个解决 ...

  7. Html技巧 语义化你的代码

    首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,语义化的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途和作用. ...

  8. 从零开始,做一个NodeJS博客(二):实现首页-加载文章列表和详情

    标签: NodeJS 0 这个伪系列的第二篇,不过和之前的几篇是同一天写的.三分钟热度貌似还没过. 1 静态资源代理 上一篇,我们是通过判断请求的路径来直接返回结果的.简单粗暴,缺点明显:如果url后 ...

  9. Flex Viewer

    一.Flex Viewer简介 Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架.业务人员使用该框架可以无需任何额外的编程就能够通过简单配 ...

  10. Office 365 - SharePoint 2013 Online 在应用商店中添加应用

    1.在使用应用程序商店的时候,先点击配置应用商店设置,如下图: 2.发现SharePoint要求我们创建应用程序目录,用来分发SharePoint App的一个网站,不过不创建的话,依然可以在应用商店 ...