2011-01-27 55 views
3

我想在SQL Server 2008中创建一个存储过程以创建数据库角色并授予他们权限,该参数需要一个参数nvarchar一个角色名称,即将创建,但我不知道如何写这个。T-SQL语句不会接受变量作为授予语句中的角色名称

我能够创造这个

EXEC sp_addrole @RoleName 

的作用,但是当我尝试这个

Grant select on dbo.someTable to @RoleName 

授予权限的角色也不会接受@rolename,怎么办我去做这个?

感谢

+0

许多这样的“管理”的语句做**不**接受变量运行 - 使用显式名称,或者您必须使用动态SQL(将您的显式SQL语句构建为字符串变量,然后执行它)来实现您的目标 – 2011-01-27 11:51:42

回答

6

使用动态SQL生成SQL语句的文本,然后可以使用EXEC

declare @sql nvarchar(max) 
set @sql = 'Grant select on dbo.someTable to ' + @RoleName -- protect if required 
EXEC (sql)