Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (E-O)

 

EXECUTE 语句 [ESQL]

此语句用于执行预准备 SQL 语句。

语法 1
EXECUTE statement
[ USING { hostvar-list | DESCRIPTOR sqlda-name } ]
[ INTO { into-hostvar-list | DESCRIPTOR into-sqlda-name } ]
[ ARRAY :row-count ]
row-count : integer or hostvar
statement :   identifier | hostvar | string 
sqlda-name : identifier
into-sqlda-name :  identifier
语法 2
EXECUTE IMMEDIATE statement
statement :  string | hostvar
参数
  • USING 子句   SELECT 语句或 CALL 语句的结果放在变量列表的变量中或放在指定的 SQLDA 所描述的程序数据区中。OUTPUT(选择列表或参数)与主机变量列表或 SQLDA 描述符数组之间是一对一的对应关系。

  • INTO 子句   如果 EXECUTE INTO 与 INSERT 语句一起使用,则插入的行在第二个描述符中返回。例如,当使用自动增量主键或生成主键值的 BEFORE INSERT 触发器时,EXECUTE 语句提供一种机制,可立即重新读取行并确定指派给该行的主键值。对自动增量键使用 @@identity 也可以获得同样的效果。

  • ARRAY 子句   可选的 ARRAY 子句可与预准备 INSERT 语句一起使用,从而允许宽插入,即一次插入多行,这样可以提高性能。整数值是插入的行数。SQLDA 中,每个条目必须有一个变量(行数 * 列数)。第一行放在 SQLDA 变量 0 和(每行的列数)-1 之间,依此类推。

注释

EXECUTE 语句可用于任何可以预准备的 SQL 语句。游标用于返回数据库中的许多行的 SELECT 语句或 CALL 语句(请参见在嵌入式 SQL 中使用游标)。

成功执行 INSERT、UPDATE 或 DELETE 语句后,SQLCA (SQLCOUNT) 中的 sqlerrd[2] 字段中填入受上述操作影响的行数。

语法 1   执行指定的动态语句,该语句是先前已预准备的语句。如果动态语句包含为请求(绑定变量)提供信息的主机变量占位符,则要么 sqlda-name 必须指定一个指向 SQLDA(它包含了足够的描述符供语句中出现的所有绑定变量使用)的 C 指针变量,要么必须在 hostvar -list 中提供绑定变量。

语法 2   PREPARE 和 EXECUTE 语句的简写形式,不包含绑定变量或输出。字符串或主机变量中包含的 SQL 语句会立即得以执行,并且在完成后被删除。

权限

检查所执行的语句的权限。

副作用

无。

另请参见
标准和兼容性
  • SQL/2003   核心 SQL 外部的特性。

示例

执行 DELETE。

EXEC SQL EXECUTE IMMEDIATE
'DELETE FROM Employees WHERE EmployeeID = 105';

执行预准备 DELETE 语句。

EXEC SQL PREPARE del_stmt FROM
'DELETE FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE del_stmt USING :employee_number;

执行预准备查询。

EXEC SQL PREPARE sel1 FROM
'SELECT Surname FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE sel1 USING :employee_number INTO :surname;