我希望我能帮助理解一个简单的存储过程。 基本上,我想将select语句的输出存储在变量中,然后打印出变量的值。
我在这里发现了一个非常相似的问题: Simple Stored Procedure Question
代码如下:
CREATE PROCEDURE ReturnPrice
@carID int,
@price decimal(18,2) output
AS
SELECT
@price = Price
FROM
dbo.Cars
WHERE
CarID = @carID
我的问题是:我如何获得@carID的值?
如果我试试这个:
declare @carOutput varchar(50)
exec carInformation, '@carOutput varchar(50) output', @carOutput output
我收到错误:
Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near ','.
谢谢!
答案 0 :(得分:5)
exec carInformation, '@carOutput varchar(50) output', @carOutput output
^bad
exec carInformation '@carOutput varchar(50) output', @carOutput output
^good
但'@carOutput varchar(50) output'
必须是一个int,但是你传入一个字符串
您需要让调用应用程序知道@carID的值,并且该过程使用该值来返回价格。
所以尝试类似:
DECLARE @CarID_x int
,@Price_x decimal(18,2)
SET @CarID_x=123
EXEC ReturnPrice @CarID, @Price_x OUTPUT
PRINT @Price_x
或
DECLARE @Price_x decimal(18,2)
EXEC ReturnPrice 123, @Price_x OUTPUT
PRINT @Price_x
上面的两个代码示例都会返回Price
行的dbo.Cars
列的值CarID
。
如果您不知道123
,请运行:
CarID
您将获得一个包含所有汽车价格的结果集。