我可以将select语句的结果作为参数值传递给存储过程吗?

时间:2009-12-16 01:10:21

标签: sql sql-server tsql stored-procedures

我只是想知道我的选择会返回一行。 这样的事情是可能的还是我需要一个临时变量?

假设我的存储过程采用了一个参数:

exec dbo.GetUserData @UserName = UserName from @MyTempTable where UserId= @UserId

或者如果期望的参数是XML怎么办?有没有办法可以做像

这样的事情
exec dbo.GetUserData @UserXml =
    select 
        case 
            when @val = 1 then '1' 
            when @val = 0 then '0' 
            else NULL 
        end as '@MyId',
        @ThisId as '@ThisId',
        @ThatId as '@ThatId'
    FOR XML PATH('Info')

2 个答案:

答案 0 :(得分:4)

XML或其他方式,在EXEC调用中使用变量之前将值赋给变量。

DECLARE @UserName [data type]

BEGIN

  SELECT @UserName = UserName 
    FROM @MyTempTable 
   WHERE UserId = @UserId

    EXEC dbo.GetUserData @UserName

END

答案 1 :(得分:4)

你需要一个临时变量。

DECLARE @username nvarchar(20) 
SELECT @username = Username FROM @MyTempTable WHERE UserId=@UserId

exec dbo.GetUserData @Username.