Оператор T-SQL не будет принимать переменную в качестве имени роли в операторе предоставления

Я хочу создать хранимый процесс в SQL Server 2008 для создания ролей базы данных и предоставления им разрешений, который принимает один параметр, nvarchar это представляет имя роли, которое должно быть создано, но я не уверен, как написать это.

Я могу создать роль с этим

EXEC sp_addrole @RoleName

но когда я пытаюсь предоставить разрешения на роль с этим

Grant select on dbo.someTable to  @RoleName

он не примет @RoleName, как мне это сделать?

Спасибо

1 ответ

Решение

Используйте динамический SQL для генерации оператора SQL в виде текста, который затем можно запустить с помощью EXEC

declare @sql nvarchar(max)
set @sql = 'Grant select on dbo.someTable to ' + @RoleName  -- protect if required
EXEC (sql)
Другие вопросы по тегам