从存储过程中获得值

发表于:2007-06-30来源:作者:点击数: 标签:
从存储过程中获得值 你可以从存储过程中接受值。这些值可以直接在你的Active Server Pages中使用(参看第24章“使用Commands”)。同样,你可以在其他的存储过程中获得这些值。假如第一个过程调用了第二个存储过程,则第一个过程能接受有第二个过程设置的参

从存储过程中获得值

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

原文转自:http://www.ltesting.net