EXECUTE IMMEDIATE 语句使用文字字符串(在引号中)和变量的组合,允许在过程内构建语句。
例如,以下过程包含创建表的 EXECUTE IMMEDIATE 语句。
CREATE PROCEDURE CreateTableProc(
IN tablename char(30) )
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE '
|| tablename
|| '(column1 INT PRIMARY KEY)'
ENDEXECUTE IMMEDIATE 语句可以与返回结果集的查询一起使用。例如:
CREATE PROCEDURE DynamicResult(
IN Columns LONG VARCHAR,
IN TableName CHAR(128),
IN Restriction LONG VARCHAR DEFAULT NULL)
BEGIN
DECLARE Command LONG VARCHAR;
SET Command = 'SELECT ' || Columns || ' FROM ' || TableName;
IF ISNULL( Restriction,'') <> '' THEN
SET Command = Command || ' WHERE ' || Restriction;
END IF;
EXECUTE IMMEDIATE WITH RESULT SET ON Command;
END以下语句调用此过程:
CALL DynamicResult( 'table_id,table_name', 'SYSTABLE', 'table_id <= 10')
| table_id | table_name |
|---|---|
| 1 | SYSTABLE |
| 2 | SYSCOLUMN |
| 3 | SYSINDEX |
| ... | ... |
在原子复合语句中,不能使用导致 COMMIT(提交)的 EXECUTE IMMEDIATE 语句,因为在该上下文中不允许 COMMIT。
有关 EXECUTE IMMEDIATE 语句的详细信息,请参见 EXECUTE IMMEDIATE 语句 [SP]。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。