Ray*_*Ray 0 sql t-sql sql-server sql-server-2008
我希望我能帮助理解一个简单的存储过程.基本上,我想将select语句的输出存储在变量中,然后打印出变量的值.
我在这里找到了一个非常相似的问题: 简单的存储过程问题
代码如下:
CREATE PROCEDURE ReturnPrice
@carID int,
@price decimal(18,2) output
AS
SELECT
@price = Price
FROM
dbo.Cars
WHERE
CarID = @carID
Run Code Online (Sandbox Code Playgroud)
我的问题是:我如何获得@carID的价值?
如果我试试这个:
declare @carOutput varchar(50)
exec carInformation, '@carOutput varchar(50) output', @carOutput output
Run Code Online (Sandbox Code Playgroud)
我得到一个错误:
Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near ','.
Run Code Online (Sandbox Code Playgroud)
谢谢!
exec carInformation, '@carOutput varchar(50) output', @carOutput output
^bad
exec carInformation '@carOutput varchar(50) output', @carOutput output
^good
Run Code Online (Sandbox Code Playgroud)
但也'@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
Run Code Online (Sandbox Code Playgroud)
要么
DECLARE @Price_x decimal(18,2)
EXEC ReturnPrice 123, @Price_x OUTPUT
PRINT @Price_x
Run Code Online (Sandbox Code Playgroud)
两个代码示例以上将返回Price列值对于dbo.Cars具有行CarID的值123.
如果你不知道CarID那么运行:
SELECT
CarID, Price
FROM dbo.Cars
Run Code Online (Sandbox Code Playgroud)
并且您将获得包含所有汽车的所有价格的结果集.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |