- 浏览: 335666 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
hufangxian:
估计面试官都被你的回答搞晕了。
抽象类和接口的理解 -
alvin198761:
需要了解多态和设计模式,了解一些框架的原理,你就知道这东东真正 ...
抽象类和接口的理解 -
sangei:
谢谢楼上提醒,希望慢慢能有所进步。
抽象类和接口的理解 -
jackra:
书背的不错可以看看设计模式如何使用抽象类
抽象类和接口的理解 -
ptsd:
lag(column_x,number1,XX)用来返回当前数 ...
【转】oracle的LAG和LEAD分析函数
EXECUTE IMMEDIATE Statement
The EXECUTE
IMMEDIATE
statement executes a dynamic SQL statement or anonymous PL/SQL block. You can use it to issue SQL statements that cannot be represented directly in PL/SQL, or to build up statements where you do not know all the table names, WHERE clauses, and so on in advance. For more information, see Chapter 7.
Syntax
Description of the illustration execute_immediate_statement.gif
Keyword and Parameter Description
bind_argument
An expression whose value is passed to the dynamic SQL statement, or a variable that stores a value returned by the dynamic SQL statement.
define_variable_name
A variable that stores a selected column value.
dynamic_string
A string literal, variable, or expression that represents a single SQL statement or a PL/SQL block. It must be of type CHAR
or VARCHAR2
, not NCHAR
or NVARCHAR2
.
INTO ...
Used only for single-row queries, this clause specifies the variables or record into which column values are retrieved. For each value retrieved by the query, there must be a corresponding, type-compatible variable or field in the INTO
clause.
record_name
A user-defined or %ROWTYPE
record that stores a selected row.
RETURNING INTO ...
Used only for DML statements that have a RETURNING
clause (without a BULK
COLLECT
clause), this clause specifies the bind variables into which column values are returned. For each value returned by the DML statement, there must be a corresponding, type-compatible variable in the RETURNING
INTO
clause.
USING ...
Specifies a list of input and/or output bind arguments. The parameter mode defaults to IN
.
Usage Notes
Except for multi-row queries, the dynamic string can contain any SQL statement (without the final semicolon) or any PL/SQL block (with the final semicolon). The string can also contain placeholders for bind arguments. You cannot use bind arguments to pass the names of schema objects to a dynamic SQL statement.
You can place all bind arguments in the USING
clause. The default parameter mode is IN
. For DML statements that have a RETURNING
clause, you can place OUT
arguments in the RETURNING
INTO
clause without specifying the parameter mode, which, by definition, is OUT
. If you use both the USING
clause and the RETURNING
INTO
clause, the USING
clause can contain only IN
arguments.
At run time, bind arguments replace corresponding placeholders in the dynamic string. Every placeholder must be associated with a bind argument in the USING
clause and/or RETURNING
INTO
clause. You can use numeric, character, and string literals as bind arguments, but you cannot use Boolean literals (TRUE
, FALSE
, and NULL
). To pass nulls to the dynamic string, you must use a workaround. See "Passing Nulls to Dynamic SQL".
Dynamic SQL supports all the SQL datatypes. For example, define variables and bind arguments can be collections, LOB
s, instances of an object type, and refs. Dynamic SQL does not support PL/SQL-specific types. For example, define variables and bind arguments cannot be Booleans or index-by tables. The only exception is that a PL/SQL record can appear in the INTO
clause.
You can execute a dynamic SQL statement repeatedly using new values for the bind arguments. You still incur some overhead, because EXECUTE
IMMEDIATE
re-prepares the dynamic string before every execution.
The string argument to the EXECUTE IMMEDIATE
command cannot be one of the national character types, such as NCHAR
or NVARCHAR2
.
Examples
The following PL/SQL block contains several examples of dynamic SQL:
DECLARE sql_stmt VARCHAR2(200); plsql_block VARCHAR2(500); emp_id NUMBER(4) := 7566; salary NUMBER(7,2); dept_id NUMBER(2) := 50; dept_name VARCHAR2(14) := 'PERSONNEL'; location VARCHAR2(13) := 'DALLAS'; emp_rec emp%ROWTYPE; BEGIN EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)'; sql_stmt := 'INSERT INTO dept VALUES (:1, :2, :3)'; EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, location; sql_stmt := 'SELECT * FROM emp WHERE empno = :id'; EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id; plsql_block := 'BEGIN emp_pkg.raise_salary(:id, :amt); END;'; EXECUTE IMMEDIATE plsql_block USING 7788, 500; sql_stmt := 'UPDATE emp SET sal = 2000 WHERE empno = :1 RETURNING sal INTO :2'; EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary; EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num' USING dept_id; EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE'; END;
发表评论
-
SQL中on条件与where条件的区别
2016-02-17 10:26 731/* 标题:SQL中 -
mysql update注意
2016-01-18 16:16 601drop table a; CREATE TABLE IF ... -
Oracle中JOB的创建方法以及一个细节的探究(转)
2012-10-15 16:35 1264在Oracle中可以使用JOB来实现一些任务的自动化执行,类似 ... -
oracle里的job和schedule有什么区别(转)
2012-10-15 16:31 1300610g 中新推出的SCHEDULER可能确实会让很多初接触的朋 ... -
procedure的加密
2012-08-06 14:34 773wrap iname=eptapi.pac oname=ept ... -
sql plus中执行pl/sql
2012-03-23 00:18 0declare v_string varc ... -
(转)oracle 带输出参数存储过程
2012-03-23 00:13 0执行带输出参数的存储过程 SQL> var c v ... -
(转)Oracle:Authid Current_User的使用
2012-03-22 23:53 0我们知道,用户拥有的role权限在存储过程是不可用的。遇 ... -
在pl/sql里select dba_jobs为什么不成功
2012-03-22 23:52 0PROCEDURE TEST1 ( PROCEDR ... -
(转)Oracle 中的exception——(Raise)
2012-03-22 23:30 15551.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用 ... -
(转)批量绑定—BULK COLLECT
2012-03-22 23:26 2895在 PL/SQL 编码中,经常会从表中获取结果集,然后进行一些 ... -
(转)PL/SQL --> 动态SQL的常见错误
2012-03-22 18:31 1443--============================ ... -
Oracle SELECT with an array using an IN
2012-01-18 17:03 1329Oracle SELECT with an ... -
pl/sql 实现类似于split 的分割字符串的功能
2012-01-12 23:55 61541、先建立一个包,定义数组类型:CREATE OR REP ... -
c#向pl/sql传递数组参数
2012-01-12 23:48 39121.OracleParameterpout1=OracleDb ... -
【实验】【PROCEDURE】一个最简单的oracle存储过程"proc_helloworld"
2011-08-08 09:51 1249本文通过一个最简单的oracle存储过程"proc_ ... -
创建oracle job
2011-07-27 17:20 886oracle job简介 主要的使用情景 定时在后台执行 ...
相关推荐
在Oracle数据库中,`EXECUTE IMMEDIATE`是一个非常强大的特性,允许在运行时动态执行SQL语句或PL/SQL块。这一功能自Oracle 8i版本的DBMS_SQL包引入以来,极大地增强了PL/SQL的灵活性和动态性。通过`EXECUTE ...
execute immediate 用法研究 Execute Immediate 是 Oracle 中的一个功能强大且灵活的语句,它可以解析并马上执行动态的 SQL 语句或非运行时创建的 PL/SQL 块。 Execute Immediate 的目标是减小企业费用并获得较高的...
本文将深入探讨“动态SQL之EXECUTE IMMEDIATE”,并结合标签“源码”和“工具”,阐述如何在实际开发中应用这一技术。 动态SQL主要分为两种形式:绑定变量(Bind Variables)和EXECUTE IMMEDIATE。绑定变量主要用于...
"execute immediate" 是Oracle数据库中的动态SQL执行语句,但在这里我们讨论的是SQL Server,它使用不同的命令来实现类似的功能。不过,我们可以理解这个描述是在尝试通过编程方式自动化SQL Server的备份恢复过程。...
EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交 如果通过EXECUTE IMMEDIATE处理DML命令, 那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,
Oracle 动态 SQL 之 EXECUTE IMMEDIATE Oracle 动态 SQL 中的 EXECUTE IMMEDIATE 语句是数据库中执行动态 SQL 语句或非运行时创建的 PL/SQL 块的重要工具。与 DBMS_SQL package 相比,EXECUTE IMMEDIATE 使用较...
EXECUTE IMMEDIATE的优点是可以减小企业费用并获得较高的性能,但是需要注意其使用技巧和限制。 Oracle中执行动态SQL可以使用动态游标或EXECUTE IMMEDIATE两种方法。动态游标可以实现灵活的SQL语句生成,而EXECUTE ...
动态SQL的核心在于`EXECUTE IMMEDIATE`语句,这使得我们能够在不知道具体SQL结构或者需要根据运行时条件来决定SQL语句的情况下,灵活地执行数据库操作。 首先,我们要理解`EXECUTE IMMEDIATE`的基本语法: ```sql ...
其中一个核心功能就是`EXECUTE IMMEDIATE`,它允许开发者在运行时构建并执行SQL语句。这在需要动态生成SQL查询或DML(数据操纵语言)操作时特别有用。本文将深入探讨如何在Oracle过程中使用`EXECUTE IMMEDIATE`来...
本篇文章将深入探讨标题“ORCL总结”所涵盖的两个核心概念:存储过程和EXECUTE IMMEDIATE语句,这两者在数据库编程中扮演着关键角色。 首先,我们来了解“存储过程”。存储过程是一组预先编译好的SQL语句,保存在...
在Oracle中,`EXECUTE IMMEDIATE`语句用于动态执行SQL或者PL/SQL代码,这对于处理不确定的数据操作或者根据用户输入构建查询非常有用。 首先,我们来看一个例子,这个例子展示了如何使用`EXECUTE IMMEDIATE`执行一...
根据给定的信息,本文将详细解释动态PL/SQL的相关知识点,包括动态SQL的基本概念、如何使用`EXECUTE IMMEDIATE`语句创建表、插入数据以及查询数据等。 ### 动态SQL简介 在PL/SQL中,动态SQL指的是运行时才能确定其...
在 Gbase8s 中,可以使用 execute immediate 语句来执行动态 SQL,execute immediate 需要在存储过程中使用。 例如,创建一个存储过程,可以用来创建表。以下是一个示例代码: create or replace procedure create...
动态SQL的核心在于`EXECUTE IMMEDIATE`语句,这使得开发者能够在不知道具体SQL结构或者需要根据运行时的条件来决定SQL行为的情况下编写代码。 在动态SQL中,`EXECUTE IMMEDIATE`的使用方式主要有以下几种: 1. **...
在Oracle中,我们可以通过存储过程中的`EXECUTE IMMEDIATE`语句动态执行SQL语句,包括创建视图。例如: ```sql CREATE OR REPLACE PROCEDURE P_View1 AS BEGIN EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW V_View1...
动态SQL的实现主要通过两种方法:直接执行(EXECUTE IMMEDIATE)和PREPARE/EXECUTE组合。下面将详细讲解这两种方法及其应用。 1. 直接执行(EXECUTE IMMEDIATE): 这种方式是直接将SQL语句作为字符串传递给数据库...
使用EXECUTE IMMEDIATE语句执行动态SQL非常简单,只需将要执行的动态SQL语句作为字符串赋值给一个变量,然后将该变量作为EXECUTE IMMEDIATE命令的参数即可执行。在处理动态SQL时,如果有需要绑定参数,则可以在...
1. **EXECUTE IMMEDIATE语句**:这是执行大多数动态SQL操作的方式,包括DDL、DCL和DML语句,以及单行SELECT。它直接执行包含在字符串变量中的SQL命令。 ```sql DECLARE sql_stmt1 VARCHAR2(128); BEGIN sql_...
在Oracle中,动态SQL主要通过`EXECUTE IMMEDIATE`语句和`PREPARE`、`EXECUTE`、`COMMIT`等组合来实现。例如: ```sql DECLARE sql_statement VARCHAR2(200); BEGIN sql_statement := 'SELECT * FROM employees ...