Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Переменные в командах / 3 сообщений из 3, страница 1 из 1
14.01.2002, 14:52
    #32020669
Alexey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные в командах
Можно ли как-то применять переменные вместо имени таблицы
в командах Transact-SQL. Например так:

declare @tablename nvarchar(
set @tablename='rest'+str(year(getdate()))
select * from @tablename
...
Рейтинг: 0 / 0
14.01.2002, 15:00
    #32020671
Переменные в командах
Такая постановка вопроса говорит о неверном проектировании Вашей базы данных.
Если данные имеют одно и то же концептуальное значение, то они должны располагаться в одной таблице. Все разбиения данных в этой таблице должны производиться с помощью полей-селекторов.

Если уж так припёрло, то создай один VIEW (UNION ALL) и делай выборки уже из него.

Если выборка производится из батча, то sp_execsql.

Если в stored procedure, то sp_execsql 'insert into #temptable select... ; select * from #temptable
...
Рейтинг: 0 / 0
14.01.2002, 15:17
    #32020674
Garya
Garya Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные в командах
declare @Script varchar(8000)
set @Script='select * from '+@tablename
exec(@Script)
Это называется "динамический SQL". Его использование чревато дырами в защите. Если приведенный фрагмент является частью триггера или хранимой процедуры, то 'select * from '+@tablename выполняется вне контекста этой хранимой процедуры/триггера и совсем не с правами создавшего триггер/процедуру, а с правами того, кто эту процедуру ВЫПОЛНЯЕТ (то есть с правами пользователя). Получается, что вам нужно открывать непосредственный доступ ко всем таблицам, чтобы под учетной записью любого пользователя подобный скрипт мог выполниться без ругательств о недостаточных правах. Это в свою очередь предоставляет фактически всем пользователям возможность выполнить практически любой SQL-запрос, включая самые зловредные и разрушительные.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Переменные в командах / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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