`

plsql EXECUTE IMMEDIATE .

阅读更多

PLSQL中 EXECUTE IMMEDIATE语句
  
    先说说绑定变量
   ":"称绑定变量指示符,解释如下:
   它是用户放入查询中的占位符,它会告诉Oracle" 现在生成一个方案框架,实际执
   行语句的时候,会提供应该使用的实际值"。
   例子如下:
   select * from emp where dep='sale'; //不使用绑定变量
   select * from emp where dep=:sale //使用绑定变量
   一般在 procedure or function 中使用,可以优化共享池的使用。
    两句的区别很明显,后者多一个占位符,这个以冒号开始的变量可以灵活地执行不
   同条件的where语句,这是动态SQL语句。
  1、 语法:
  
    EXECUTE IMMEDIATE dynamic_string
    [INTO {define_variable[,define_variable]…| record}]
    [USING [IN | OUT | IN OUT] bind_argument[,[IN | OUT \ IN OUT] bind_argumnet]…]
    [{RETURNING | RETURN} INTO bing_argument[,bind_argument]…];
  2、 用法
    处理DDL操作(CREATE,ALTER,DROP)
    CREATE OR REPLACE PROCEDURE drop_table(table_name VARCHAR2)
    IS
     Sql_statemet VARCHAR2(100);
    BEGIN
     Sql_statement:=’DROP TABLE’ || table_name;
     EXECUTE IMMEDIATE sql_statement;
    END;
    /
    建立过程drop_table后,调用如下:
    SQL> exec drop_table(‘worker’)
    处理DCL操作(GRANT REVOKE)
    SQL> conn system/manager
    CREATE OR REPLACE PROCEDURE grant_sys_priv(priv VARCHAR2,username VARCHAR2)
    IS
     Sql_stat VARCHAR2(100);
    BEGIN
     Sql_stat:=’GRANT “ || priv|| ’ TO ’|| username;
    EXECUTE IMMEDIATE sql_stat;
    END;
    /
    调用
    SQL> exec grant_sys_priv(‘CREATE SESSION’,’SCOTT’)
    处理DML操作(INSERT UPDATE DELETE)
    如果DML语句带有占位符,那么在E I语句中则要带USING子句
    如果DML语句带有RETURNING子句,那么E I语句中要带有RETURNINGINTO子句
    例子,处理单行查询:
    DECLARE
     sql_stat VARCHAR2(100);
     emp_record tbl%ROWTYPE;
    BEGIN
     sql-stat:='SELECT * FROM tbl WHERE tblno=:no';
     EXECUTE IMMEDIATE sql_stat INTO emp_record USING &1;
     dbms_output.put_line(emp_record.ename||emp_record.sal);
    END;
    /

转至:http://blog.tianya.cn/blogger/post_read.asp?BlogID=1789305&PostID=14628638

分享到:
评论

相关推荐

    oracle动态sql之EXECUTE IMMEDIATE.docx

    Oracle 动态 SQL 之 EXECUTE IMMEDIATE Oracle 动态 SQL 中的 EXECUTE IMMEDIATE 语句是数据库中执行动态 SQL 语句或非运行时创建的 PL/SQL 块的重要工具。与 DBMS_SQL package 相比,EXECUTE IMMEDIATE 使用较...

    execute immediate 用法研究

    execute immediate 用法研究 Execute Immediate 是 Oracle 中的一个功能强大且灵活的语句,它可以解析并马上执行动态的 SQL 语句或非运行时创建的 PL/SQL 块。 Execute Immediate 的目标是减小企业费用并获得较高的...

    plsql_cn.rar

    11. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL,增强了灵活性,但需要注意SQL注入的风险。 12. **事务管理**:PL/SQL支持显式和隐式的事务管理,通过COMMIT、ROLLBACK和SAVEPOINT语句...

    java调用PLSQL分页过程.doc

    - 通过 `EXECUTE IMMEDIATE` 执行动态SQL语句获取总记录数。 - 根据总记录数计算总页数。 2. **Java调用PL/SQL**: - 使用 `CallableStatement` 类来执行存储过程。 - 通过 `registerOutParameter` 注册输出...

    PLSQL程序设计.pdf (清晰版)

    EXECUTE IMMEDIATE语句用于执行字符串形式的SQL语句。 **9.3 使用DBMS_DDL软件包** DBMS_DDL包用于执行DDL语句。 **9.4 使用DBMS_JOB软件包编制工作调度** DBMS_JOB包用于创建和管理定时任务。 **9.5 使用DBMS_...

    福建省电力公司oracle培训教材--PLSQL语言篇.pptx

    EXECUTE IMMEDIATE 'INSERT INTO table_name (column1, column2) VALUES (''value1'', ''value2'')'; ``` 8. PL/SQL的异常处理 PL/SQL提供了异常处理机制,通过BEGIN...EXCEPTION...END结构捕获和处理异常。例如: ...

    Oracle数据库系统应用开发实用教程电子课件 第7章 PLSQL编程基础.ppt

    - 动态SQL允许在运行时构建和执行SQL语句,提高了代码的灵活性,如使用EXECUTE IMMEDIATE命令。 6. **游标** - **显式游标**:允许程序逐行处理查询结果,通过声明、打开、提取和关闭游标步骤实现。 - **带参数...

    PLSQL12.07.zip

    14. **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,增强了灵活性。 15. **事务管理**:使用`COMMIT`和`ROLLBACK`语句来提交或回滚事务,确保数据一致性。 16. **PL/SQL索引**:可以创建索引以提高...

    oracle笔记二--plsql 编程.txt

    当使用`EXECUTE IMMEDIATE`执行DML语句时,可以通过`USING`子句传递绑定变量。 - **示例**: ```sql DECLARE l_dept_name VARCHAR2(20) := 'Testing'; l_loc VARCHAR2(10) := 'Dubai'; BEGIN EXECUTE ...

    精通Oracle 10g PLSQL编程.pdf

    5. **动态SQL**:通过EXECUTE IMMEDIATE语句,开发者可以在运行时构建和执行SQL语句,增强了灵活性。 6. **游标变量和 bulk collect**:游标变量允许将结果集存储在变量中,bulk collect则可以一次处理多行数据,...

    PLSQL学习.docx

    通过绑定变量和使用EXECUTE IMMEDIATE语句,可以实现对DDL和其他任意SQL语句的动态执行。 总的来说,PL/SQL作为Oracle数据库的核心编程语言,提供了丰富的功能,包括过程编程、错误处理、数据操作以及复杂的逻辑...

    PLSQL.rar_SQLServer pls_plsql_plsql sqlserver

    例如,可以使用`INTO`子句将查询结果插入到变量中,或使用`EXECUTE IMMEDIATE`动态执行SQL。 7. **事务管理**: PLSQL支持事务的概念,可以使用`COMMIT`提交事务,`ROLLBACK`回滚事务,以确保数据的一致性和完整性...

    oracle plsql6

    9. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,增强了SQL的灵活性。 10. **事务管理**:PL/SQL提供了COMMIT和ROLLBACK语句来管理和提交事务,确保数据的一致性。 11. **游标表达式*...

    PLSQL用户指南与参考.rar

    - 动态SQL:讲解EXECUTE IMMEDIATE和DBMS_SQL包,用于在运行时构建和执行SQL语句。 - 游标:介绍如何使用游标进行逐行处理数据,以及游标的声明、打开、关闭和循环操作。 - 其他高级特性:可能包括记录类型、类型...

    PLSQL.zip_zip

    7. **动态SQL**:允许在运行时构造SQL语句,通过EXECUTE IMMEDIATE和PREPARE, EXECUTE, CLOSE组合,提高了代码的灵活性。 8. **存储过程和函数**:存储过程是预编译的PL/SQL代码集合,可包含输入、输出参数,用于...

    PLSQL學習資料.7z

    7. **动态SQL**:通过EXECUTE IMMEDIATE和PREPARE-COMMIT-FETCH-CLOSE组合,可以执行运行时构建的SQL语句,增加了程序的灵活性。 8. **游标变量和集合**:游标变量可以保存一个游标的当前状态,而集合则可以存储一...

    PLSQL 个人自学总结

    例如,我们可以通过BEGIN...END块来组织代码,通过EXECUTE IMMEDIATE动态执行SQL语句。 3. 异常处理部分: PLSQL提供了一个强大的异常处理机制,允许我们预定义或自定义异常,并在发生错误时进行相应的处理。异常...

    Oracle_PLSQL.rar_Java plsql_oracle_oracle doc_pl sql_plsql

    - **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,适应更灵活的需求。 3. **PL/SQL控制结构** - **条件判断**:IF-THEN-ELSIF-ELSE语句用于根据条件执行不同的代码路径。 - **循环**:WHILE、FOR...

    PLSQL7.1经典版本

    例如,通过EXECUTE IMMEDIATE语句动态执行SQL语句,或者通过CURSOR声明和处理结果集。 5. **子程序**:PLSQL支持创建存储过程、函数和包,这些子程序可以封装复杂的业务逻辑,提高代码复用性和可维护性。存储过程不...

Global site tag (gtag.js) - Google Analytics