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

Вопрос: НО КАК ПРИСВОИТЬ значение переменной при использовании 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
Присвоение значения переменной посредством EXEC
    #32068702
NAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NAV
Гость
Не ожидал, что окажется все так просто :)
Берем 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
Присвоение значения переменной посредством EXEC
    #32068734
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Присвоение значения переменной посредством EXEC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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