此语句用于执行预准备 SQL 语句。
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
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; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |