Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Присвоение значения переменной посредством EXEC / 3 сообщений из 3, страница 1 из 1
17.11.2002, 02:17:33
    #32068699
NAV
NAV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоение значения переменной посредством EXEC
Задача такая. Требуется выбрать максимальное значение столбца таблицы и затем совершить над ним определенное преобразование. Решил использовать процедуру с тем, чтобы название столбца (равно, как и название таблицы - но это уже потом добавлю) можно было передавать.

Вопрос: НО КАК ПРИСВОИТЬ значение переменной при использовании EXEC??

Когда прячу @a внутри EXEC - снаружи эта переменная не видна. А когда делаю так, как представлено ниже... то знак равенства тут ни к селу, ни к городу.
Какая же должна быть форма записи, подскажите пожалуйста??

CREATE PROCEDURE myNumContract
@tablecol varchar(10),
@a char(10) output
as
exec ('select' + @a + '=MAX(' + @tablecol + ') from CLIENT_INFO')
return @a
GO
...
Рейтинг: 0 / 0
17.11.2002, 04:19:02
    #32068702
NAV
NAV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоение значения переменной посредством EXEC
Не ожидал, что окажется все так просто :)
Берем sp_executesql и...

CREATE PROCEDURE myNumContract
@tablecol nvarchar(10),
@b nchar(10) output
as
declare @cmdsql nvarchar(500)
set @cmdsql = N'set @b = (select MAX('+@tablecol+') from CLIENT_INFO)'
exec sp_executesql @cmdsql, N'@tablecol varchar(10), @b char(10) out', @tablecol = @tablecol, @b = @b out
set @b = cast(@b as char)
return @b
GO

Чудо :)

Думаю, это предпочтительнее использованию временной таблицы. А? ;)
...
Рейтинг: 0 / 0
17.11.2002, 15:12:13
    #32068734
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоение значения переменной посредством EXEC
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Присвоение значения переменной посредством EXEC / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]