• 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 bind_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;
        /
  • 相关阅读:
    慎用WSACleanup()
    WINAPI和APIENTRY是一样的
    LeetCode208:Implement Trie (Prefix Tree)
    C++学习笔记22,普通函数重载(1)
    代理server的理解(1):Windows环境下的代理server设置
    浅析android适配器adapter中的那些坑
    HTML网页之计算器代码
    Xcode 自己主动生成版本技术最佳实践
    封装RecyclerViewAdapter实现RecyclerView下拉刷新上拉载入很多其它
    Ubuntu下在Eclipse IDE for C/C++ Developers中怎样执行C语言的GTK程序?(已解决)
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386338.html
Copyright © 2020-2023  润新知