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 语句 [T-SQL]

可使用语法 1 调用过程,它是 CALL 语句的替代方法,与 Adaptive Server Enterprise 兼容。语法 2 用于在 Transact-SQL 中执行预准备 SQL 语句。

语法 1
EXECUTE [ @return_status = ] [creator.]procedure_name [ argument, ... ]
argument :
 [ @parameter-name = ] expression
| [ @parameter-name = ] @variable [ output ]
语法 2
EXECUTE ( string-expression )
注释

语法 1 执行存储过程,选择性地提供过程参数以及检索输出值和返回状态信息。

实现 EXECUTE 语句是为了与 Transact-SQL 兼容,但此语句可以在 Transact-SQL 或 Watcom-SQL 批处理和过程中使用。

若使用语法 2,则可在 Transact-SQL 存储过程和触发器内执行语句。EXECUTE 语句扩展了可以从过程和触发器内执行的语句的范围。它使您可以执行动态预准备语句,比如用传递到过程中的参数构造的语句。此语句中的字符串必须用单引号括起来,并且此语句必须位于一行上。

Transact-SQL EXECUTE 语句无法表明需要结果集。指示 Transact-SQL 过程返回结果集的一种方法是包含类似下面的语句:

IF 1 = 0 THEN
      SELECT 1 AS a

也可以在 Transact-SQL 存储过程和触发器内执行语句。请参见EXECUTE IMMEDIATE 语句 [SP]

权限

必须是过程的所有者,具有过程的 EXECUTE 权限或者有 DBA 权限。

副作用

无。

另请参见
示例

下面的过程阐释了语法 1。

CREATE PROCEDURE p1( @var INTEGER = 54 )
AS
PRINT 'on input @var = %1!', @var
DECLARE @intvar integer
SELECT @intvar=123
SELECT @var=@intvar
PRINT 'on exit @var = %1!', @var;

以下语句使用参数输入值 23 执行过程。如果是从 Open Client 或 JDBC 应用程序连接,则 PRINT 消息显示在客户端窗口上。如果是从 ODBC 或嵌入式 SQL 应用程序连接,则消息显示在数据库服务器消息窗口中。

EXECUTE p1 23;

以下是另一种执行过程的方法,当有多个参数时该方法很有用。

EXECUTE p1 @var = 23;

以下语句使用参数的缺省值执行过程。

EXECUTE p1;

以下语句执行过程,并将返回值存储在用于检查状态的变量中。

EXECUTE @status = p1 23;