在查询的 FROM 子句中调用系统过程时,如果该过程仅定义为主体中的一条 SELECT 语句,则有时会内置该过程。即,查询会被重写以等同于初始查询,但却没有过程定义。内置该过程时,它会被重写为派生表。如果过程使用缺省参数,或它在主体中包含一条 SELECT 语句之外的任何内容,则不会内置该过程。
例如,假定您创建了以下过程:
CREATE PROCEDURE Test1( arg1 INT ) BEGIN SELECT * FROM Employees WHERE EmployeeID=arg1 END; |
现在假定您在查询的 FROM 子句中调用该过程,如下所示:
SELECT * FROM Test1( 200 ); |
数据库服务器可能按如下方式重写该查询:
SELECT * FROM ( SELECT * FROM Employees WHERE EmployeeID=CAST( 200 AS INT ) ) AS Test1; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |