从存储过程中获得值
你可以从存储过程中接受值。这些值可以直接在你的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 )
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。