`
q272156430
  • 浏览: 275791 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用Oracle的DBMS_SQL包执行动态SQL语句

阅读更多
DECLARE
       v_cursor NUMBER;
       v_stat NUMBER;
       v_row NUMBER;
       v_id NUMBER;
       v_no VARCHAR(100);
       v_date DATE;
       v_sql VARCHAR(200);
       s_id NUMBER;
       s_date DATE;
BEGIN
     s_id := 3000;
     s_date := SYSDATE;
     v_sql := 'SELECT id,qan_no,sample_date FROM "tblno" WHERE id > :sid and sample_date < :sdate';
     v_cursor := dbms_sql.open_cursor; --打开游标;
     dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析动态SQL语句;
     dbms_sql.bind_variable(v_cursor, ':sid', s_id); --绑定输入参数;
     dbms_sql.bind_variable(v_cursor, ':sdate', s_date);
     
     dbms_sql.define_column(v_cursor, 1, v_id); --定义列
     dbms_sql.define_column(v_cursor, 2, v_no, 100);
     dbms_sql.define_column(v_cursor, 3, v_date);
     v_stat := dbms_sql.execute(v_cursor); --执行动态SQL语句。
     LOOP
         EXIT WHEN dbms_sql.fetch_rows(v_cursor)<=0; --fetch_rows在结果集中移动游标,如果未抵达末尾,返回1。        
         dbms_sql.column_value(v_cursor, 1, v_id); --将当前行的查询结果写入上面定义的列中。
         dbms_sql.column_value(v_cursor, 2, v_no);
         dbms_sql.column_value(v_cursor, 3, v_date);
         dbms_output.put_line(v_id || ';' || v_no || ';' || v_date);
     END LOOP;
     dbms_sql.close_cursor(v_cursor); --关闭游标。
END;

 

3095;S051013XW00010;15-10月-05
3112;A051013XW00027;10-10月-05
3113;A051013XW00028;13-10月-05
3116;S051013XW00031;13-10月-05

 

分享到:
评论
1 楼 ksgimi 2011-07-19  
很好。
在某些场合下,存储过程或触发器里的SQL语句需要动态生成。Oracle的DBMS_SQL包可以用来执行动态SQL语句。

相关推荐

    DBMS_SQL的使用

    在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要预先定义表结构或SQL文本。`DBMS_SQL`主要通过以下...

    Oracle动态SQL之DBMS_SQL系统包的使用.pdf

    DBMS_SQL包是Oracle提供的一个内置包,用于在PL/SQL程序中构造和执行动态SQL语句。自Oracle 7.1版本(即PL/SQL 2.1版)开始引入动态SQL功能以来,DBMS_SQL包经过多次迭代不断完善其功能。如在Oracle 8.0版本中引入了...

    oracle dbms_lob

    在实际应用中,`DBMS_LOB`包通常与SQL DML语句结合使用,以处理LOB字段。例如,可以使用`DBMS_LOB.WRITE`在INSERT或UPDATE语句中修改LOB值,或者使用`DBMS_LOB.APPEND`在已有的LOB后面添加新内容。 学习`DBMS_LOB`...

    DBMS_SQL.rar_dbms_oracle

    在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...

    ORACLE数据库封装过程DBMS_SQL的应用.pdf

    DBMS_SQL 是 ORACLE 数据库提供的一种封装过程,它允许开发者在 PL/SQL 程序中执行 DDL 语句和动态的 SQL 语句。DBMS_SQL 的应用可以解决在项目开发中对用户管理和 DDL 使用的问题。 静态联接和动态联接是两种不同...

    PLSQL开发过程中,动态使用DBMS_SQL[借鉴].pdf

    Oracle 中动态 SQL 可以通过本地动态 SQL 来执行,也可以通过 DBMS_SQL 包来执行。 本地动态 SQL 是使用 EXECUTE IMMEDIATE 语句来实现的。例如,根据用户输入的表名及字段名等参数动态建表。 create or replace ...

    Oracle动态执行SQL四种方式的例子

    **DBMS_SQL**是Oracle提供的一个包,专门用于动态执行SQL语句。它提供了对SQL语句的解析、绑定变量、执行、获取结果等操作的支持。 #### 示例1:动态执行删除语句 ```sql CREATE OR REPLACE PROCEDURE demo(salary...

    Oracle_SQL注入

    - 然后,构建复杂的SQL语句,通过`EXECUTE IMMEDIATE`执行PL/SQL代码块,从而实现在Oracle数据库中创建一个Java包。 - 最终,该Java包包含两个主要功能:`runCMD`用于执行系统命令,`readFile`用于读取文件内容。 ...

    Oracle系统包详细使用方法

    Oracle系统包是数据库管理系统Oracle中一组预定义的PL/SQL包,它们提供了各种功能,用于数据库管理和维护。本文将详细讲解这些系统包的用途和使用方法。 首先,我们来看dbms_output包,它用于在PL/SQL程序中进行...

    Oracle中使用DBMS_XPLAN处理执行计划详解

    DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 这5...

    SQL Tuning Advisor使用总结

    可以通过DBMS_SQLTUNE包创建调优任务,支持针对单个SQL语句或多个SQL语句创建任务。对于多个SQL语句,首先需要创建一个SQL Tuning Set。 - **参数说明**: - `text_of_a_SQL_statement`: SQL语句文本。 - `...

    Oracle PL/SQL常用47个工具包

    11. **DBMS_SQL**: 动态执行SQL语句,提供解析、绑定变量和执行的能力。 12. **DBMS_DEBUG_JDWP**: 调试工具,允许远程Java Debug Wire Protocol (JDWP)调试器连接到PL/SQL过程。 13. **DBMS_STATS**: 用于收集和...

    DBMS_JOB包创建ORACLE定时任务

    在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,比如数据清理、统计报告生成、备份等。 ###...

    oracle执行动态sql

    除了 `EXECUTE IMMEDIATE` 外,Oracle 还提供了一个强大的包——`DBMS_SQL`,用于执行复杂的动态 SQL。与 `EXECUTE IMMEDIATE` 相比,`DBMS_SQL` 提供了更多的控制能力,尤其是在处理大型结果集和复杂事务处理方面...

    oracle笔记二--plsql 编程.txt

    #### 使用DBMS_SQL包执行动态SQL `DBMS_SQL`是Oracle提供的一个包,用于执行动态SQL语句。这种方式非常适合在运行时构建SQL语句。 - **示例**: ```sql CREATE OR REPLACE PROCEDURE my_execute(sql_string IN ...

    怎样禁用及回收java的授权dbms_java

    在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了Java应用程序的企业来说尤为重要。本文将详细介绍如何利用`dbms_java`包来...

    Re-post: DBMS_XPLAN : Display Oracle Execution Plans

    通过这些文件,读者可以学习如何使用DBMS_XPLAN来深入理解Oracle执行计划,包括查看AWR报告中的计划,以及针对当前会话的SQL语句执行情况。这对于识别性能瓶颈、优化SQL语句和提升数据库性能非常有用。在实际工作中...

    ORACLE_SQL_ALL.rar_oracle_oracle sql_sql优化

    - **SQL语句类型**:包括SELECT用于查询,INSERT用于插入,UPDATE用于更新,DELETE用于删除记录等。 - **子查询与连接**:理解如何使用子查询和不同类型的连接(内连接、外连接、自连接)来处理复杂的数据关系。 ...

    ORACLE DBMS STATS ERROR

    错误提示显示在尝试运行某些与`DBMS_STATS`相关的PL/SQL语句时,如`UTLRP.SQL`脚本,会遇到以下错误: - `PL/SQL: Statement ignored` - `PLS-00302: component 'IS_STATS_FROM_UPGRADE' must be declared` - `ORA-...

    Oracle PL_SQL高级程序设计

    全面介绍了PL/SQL语言的包、触发器、动态SQL、外部例程、对象、集合等基本概念,而且还集中讨论了Oracle8...6) 使用动态SQL语言在运行时创建并执行SQL和PL/SQL语句。 7) 允许数据库管道与警告之间进行交互会话,等等。

Global site tag (gtag.js) - Google Analytics