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 Oracle 动态 SQL 中的 EXECUTE IMMEDIATE 语句是数据库中执行动态 SQL 语句或非运行时创建的 PL/SQL 块的重要工具。与 DBMS_SQL package 相比,EXECUTE IMMEDIATE 使用较...
execute immediate 用法研究 Execute Immediate 是 Oracle 中的一个功能强大且灵活的语句,它可以解析并马上执行动态的 SQL 语句或非运行时创建的 PL/SQL 块。 Execute Immediate 的目标是减小企业费用并获得较高的...
11. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL,增强了灵活性,但需要注意SQL注入的风险。 12. **事务管理**:PL/SQL支持显式和隐式的事务管理,通过COMMIT、ROLLBACK和SAVEPOINT语句...
- 通过 `EXECUTE IMMEDIATE` 执行动态SQL语句获取总记录数。 - 根据总记录数计算总页数。 2. **Java调用PL/SQL**: - 使用 `CallableStatement` 类来执行存储过程。 - 通过 `registerOutParameter` 注册输出...
EXECUTE IMMEDIATE语句用于执行字符串形式的SQL语句。 **9.3 使用DBMS_DDL软件包** DBMS_DDL包用于执行DDL语句。 **9.4 使用DBMS_JOB软件包编制工作调度** DBMS_JOB包用于创建和管理定时任务。 **9.5 使用DBMS_...
EXECUTE IMMEDIATE 'INSERT INTO table_name (column1, column2) VALUES (''value1'', ''value2'')'; ``` 8. PL/SQL的异常处理 PL/SQL提供了异常处理机制,通过BEGIN...EXCEPTION...END结构捕获和处理异常。例如: ...
- 动态SQL允许在运行时构建和执行SQL语句,提高了代码的灵活性,如使用EXECUTE IMMEDIATE命令。 6. **游标** - **显式游标**:允许程序逐行处理查询结果,通过声明、打开、提取和关闭游标步骤实现。 - **带参数...
14. **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,增强了灵活性。 15. **事务管理**:使用`COMMIT`和`ROLLBACK`语句来提交或回滚事务,确保数据一致性。 16. **PL/SQL索引**:可以创建索引以提高...
当使用`EXECUTE IMMEDIATE`执行DML语句时,可以通过`USING`子句传递绑定变量。 - **示例**: ```sql DECLARE l_dept_name VARCHAR2(20) := 'Testing'; l_loc VARCHAR2(10) := 'Dubai'; BEGIN EXECUTE ...
5. **动态SQL**:通过EXECUTE IMMEDIATE语句,开发者可以在运行时构建和执行SQL语句,增强了灵活性。 6. **游标变量和 bulk collect**:游标变量允许将结果集存储在变量中,bulk collect则可以一次处理多行数据,...
通过绑定变量和使用EXECUTE IMMEDIATE语句,可以实现对DDL和其他任意SQL语句的动态执行。 总的来说,PL/SQL作为Oracle数据库的核心编程语言,提供了丰富的功能,包括过程编程、错误处理、数据操作以及复杂的逻辑...
例如,可以使用`INTO`子句将查询结果插入到变量中,或使用`EXECUTE IMMEDIATE`动态执行SQL。 7. **事务管理**: PLSQL支持事务的概念,可以使用`COMMIT`提交事务,`ROLLBACK`回滚事务,以确保数据的一致性和完整性...
9. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,增强了SQL的灵活性。 10. **事务管理**:PL/SQL提供了COMMIT和ROLLBACK语句来管理和提交事务,确保数据的一致性。 11. **游标表达式*...
- 动态SQL:讲解EXECUTE IMMEDIATE和DBMS_SQL包,用于在运行时构建和执行SQL语句。 - 游标:介绍如何使用游标进行逐行处理数据,以及游标的声明、打开、关闭和循环操作。 - 其他高级特性:可能包括记录类型、类型...
7. **动态SQL**:允许在运行时构造SQL语句,通过EXECUTE IMMEDIATE和PREPARE, EXECUTE, CLOSE组合,提高了代码的灵活性。 8. **存储过程和函数**:存储过程是预编译的PL/SQL代码集合,可包含输入、输出参数,用于...
7. **动态SQL**:通过EXECUTE IMMEDIATE和PREPARE-COMMIT-FETCH-CLOSE组合,可以执行运行时构建的SQL语句,增加了程序的灵活性。 8. **游标变量和集合**:游标变量可以保存一个游标的当前状态,而集合则可以存储一...
例如,我们可以通过BEGIN...END块来组织代码,通过EXECUTE IMMEDIATE动态执行SQL语句。 3. 异常处理部分: PLSQL提供了一个强大的异常处理机制,允许我们预定义或自定义异常,并在发生错误时进行相应的处理。异常...
- **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,适应更灵活的需求。 3. **PL/SQL控制结构** - **条件判断**:IF-THEN-ELSIF-ELSE语句用于根据条件执行不同的代码路径。 - **循环**:WHILE、FOR...
例如,通过EXECUTE IMMEDIATE语句动态执行SQL语句,或者通过CURSOR声明和处理结果集。 5. **子程序**:PLSQL支持创建存储过程、函数和包,这些子程序可以封装复杂的业务逻辑,提高代码复用性和可维护性。存储过程不...