Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Результат динамического запроса в переменную ...  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Есть такой код

DECLARE @Book varchar(630)
DECLARE @Cmd nvarchar(4000)
SET @Cmd='SELECT Book FROM #TmpTableName WHERE ptr = 1'
EXEC sp_executesql @Cmd


Как присвоить значение запроса переменной @Book ?
Имя временной таблицы заранее не известно. Результат запроса - всегда одно значение.
16 мар 04, 16:10    [580856]     Ответить | Цитировать Сообщить модератору
 Re: Результат динамического запроса в переменную ...  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
Пример взят из FAQ:
declare @var1 int, @var2 varchar(100), @var3 varchar(100), @var4 int

declare @mysql nvarchar(4000)
set @mysql = 'set @var1 = @var1 + @var4; set @var2 = ''CCCC''; set @var3 = @var3 + ''dddd'''
set @var1 = 0
set @var2 = 'BBBB'
set @var3 = 'AAAA'
set @var4 = 10

select @var1, @var2, @var3
exec sp_executesql @mysql, N'@var1 int out, @var2 varchar(100) out, @var3 varchar(100) out, @var4 int', @var1 = @var1 out, @var2 = @var2 out, @var3 = @var3 out, @var4 = @var4
select @var1, @var2, @var3
16 мар 04, 16:15    [580872]     Ответить | Цитировать Сообщить модератору
 Re: Результат динамического запроса в переменную ...  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Спасибо
Про OUT не подумал (точнее подумал, но не нашел описания в BOL)
16 мар 04, 16:24    [580907]     Ответить | Цитировать Сообщить модератору
 Re: Результат динамического запроса в переменную ...  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
но не нашел описания в BOL

Это не документировано.
17 мар 04, 06:35    [581740]     Ответить | Цитировать Сообщить модератору
 Re: Результат динамического запроса в переменную ...  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а почему именно:
exec sp_executesql @mysql, N'@var1 int out, @var2 varchar(100) out, @var3 varchar(100) out, @var4 int', 

@var1 = @var1 out, @var2 = @var2 out, @var3 = @var3 out, @var4 = @var4

достаточно:
exec sp_executesql @mysql, N'@var1 int out, @var2 varchar(100) out, @var3 varchar(100) out, @var4 int', 

@var1 out, @var2 out, @var3 out, @var4



для спящего время бодрствования равносильно сну
17 мар 04, 07:06    [581754]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить