Могу ли я передать результат оператора select в качестве значения параметра в хранимую процедуру? - PullRequest
0 голосов
/ 16 декабря 2009

Я просто пробовал это, зная, что мой выбор вернет одну строку.Возможно ли что-то подобное или мне потребуется временная переменная?

Допустим, моя хранимая процедура приняла один параметр:

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 ]

4 голосов
/ 16 декабря 2009

Вам понадобится временная переменная.

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

exec dbo.GetUserData @Username.
4 голосов
/ 16 декабря 2009

XML или иначе, присвойте значение переменной перед использованием переменной в вызове EXEC.

DECLARE @UserName [data type]

BEGIN

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

    EXEC dbo.GetUserData @UserName

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...