layout: global title: EXECUTE IMMEDIATE displayTitle: EXECUTE IMMEDIATE license: | Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Executes a sql statement provided as a STRING
, optionally passing arg_exprN
to parameter markers and assigning the results to var_nameN
.
EXECUTE IMMEDIATE sql_string [ INTO var_name [, …] ] [ USING { (arg_expr [ AS ] [alias] [, …] ) | arg_expr [ AS ] [alias] [, …] } ]
sql_string
A STRING expression producing a well-formed SQL statement.
INTO var_name [, …]
Optionally returns the results of a single row query into SQL variables. If the query returns no rows the result is NULL.
var_name
A SQL variable. A variable may not be referenced more than once.USING arg_expr [, …]
Optionally, if sql_string contains parameter markers, binds in values to the parameters.
arg_expr
An expression that binds to a parameter marker. If the parameter markers are unnamed the binding is by position. For unnamed parameter markers, binding is by name.alias
Overrides the name used to bind arg_expr
to a named parameter markerEach named parameter marker must be matched once. Not all arg_expr must be matched.
-- A self-contained execution using a literal string EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?)' USING 5, 6; 11 -- A SQL string composed in a SQL variable DECLARE sqlStr = 'SELECT SUM(c1) 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(c1) FROM VALUES(:first), (:second)'; EXECUTE IMMEDIATE sqlStr INTO (sum) USING 5 AS first, arg2 AS second; SELECT sum; 11