从存储过程中获得值

你可以从存储过程中接受值。这些值可以直接在你的Active Server Pages中使用（参看第24章“使用Commands

”）。同样，你可以在其他的存储过程中获得这些值。假如第一个过程调用了第二个存储过程，则第一个过程能接受有第二个过程设置的参数值。

例如，下面的存储过程输出变量@conclusion的值：

CREATE PROCEDURE check_philosophers

(@philosopher VARCHAR(30)，@conclusion VARCHAR(30) OUTPUT)

AS

IF EXISTS(SELECT name FROM Philosophers WHERE

name=@philosopher)

SELECT @conclusion=

“A philosopher”

ELSE

SELECT @conclusion=

“Not a philisopher”

注意在本例子中关键词OUTPUT的使用。该关键词紧跟在参数@conclusion的定义后面。这指明该参数将会用于从该过程中输出信息。在这个简单的例子中，参数的值将会是

“A philosopher”或“Not a philisopher”，根据变量@philosophe的值的不同而变化。

为了这些一个具有输出参数的存储过程，你需要在EXECUTE语句中使用关键词OUTPUT 。假如你在一个批处理或者另外一个存储过程中执行该过程时，你必须首先定义一个变量用于存储从过程中传递出的值，如下面的例子所示：

DELCARE @proc_results VARCHAR(30)

EXECUTE check_philosophers

“Plato”,@proc_results OUTPUT

PRINT @proc_results

在该例子中的第一个语句定义了将用于存储从过程check_philosophersZ中传出的参数值的变量。该变量将和输出参数的数据类型一模一样。第二个语句执行存储过程。注意变量@proc_results后面必须紧跟关键词OUTPUT。最后变量@proc_results的值被打印到屏幕上。

你同样可以使用名称来接收输出参数的值，下面就是一个简单的例子：

DECLARE @proc_results VARCHAR(30)

EXECUTE check_philosophers @philosopher=

”Plato”,@conclusion=@proc_results OUTPUT

PRINT @proc_results

注意在该EXECUTE语句中，参数的名称总是列在前面。你要使用@conclusion=@proc_results来接收参数@conclusion的值，而不是你可能期望的@proc_results=@conclusion。