EXECUTE IMMEDIATE
描述
执行以 STRING
形式提供的 SQL 语句,可选地将 arg_exprN
传递给参数标记,并将结果赋值给 var_nameN
。
语法
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, …] ]
[ USING { (arg_expr [ AS ] [alias] [, …] ) | arg_expr [ AS ] [alias] [, …] } ]
参数
-
sql_string
一个生成格式良好 SQL 语句的 STRING 表达式。
-
INTO var_name [, …]
可选地将单行查询的结果返回到 SQL 变量中。如果查询不返回任何行,结果为 NULL。
var_name
一个 SQL 变量。一个变量不能被引用多次。
-
USING arg_expr [, …]
可选地,如果 sql_string 包含参数标记,则将值绑定到参数。
arg_expr
绑定到参数标记的表达式。如果参数标记未命名,则按位置绑定。对于未命名的参数标记,绑定是按名称进行的。alias
覆盖用于将arg_expr
绑定到命名参数标记的名称
每个命名参数标记必须匹配一次。并非所有 arg_expr 都必须匹配。
示例
-- A self-contained execution using a literal string
EXECUTE IMMEDIATE 'SELECT SUM(col1) FROM VALUES(?), (?)' USING 5, 6;
11
-- A SQL string composed in a SQL variable
DECLARE sqlStr = 'SELECT SUM(col1) FROM VALUES(?), (?)';
DECLARE arg1 = 5;
DECLARE arg2 = 6;
EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
11
-- Using the INTO clause
DECLARE sum INT;
EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
SELECT sum;
11
-- Using named parameter markers
SET VAR sqlStr = 'SELECT SUM(col1) FROM VALUES(:first), (:second)';
EXECUTE IMMEDIATE sqlStr INTO sum USING 5 AS first, arg2 AS second;
SELECT sum;
11