我想在数据库中创建一个用户。我正在使用此存储过程来创建它:
CREATE PROCEDURE uspCreateUser
@Name varchar(50)
AS
BEGIN
CREATE USER [@Name]
WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo]
END
但是当我用
执行我的存储过程时EXEC uspCreateUser 'anny'
这会在数据库中创建@Name
的用户。
你能告诉我怎么解决这个问题?
此屏幕截图可以帮助您理解问题
答案 0 :(得分:2)
您可以使用动态SQL。通常,只要T-SQL语法不接受变量,动态SQL就可以提供解决方案。
CREATE PROCEDURE uspCreateUser
@Name varchar(50)
AS
BEGIN
DECLARE @sqlstr nvarchar(max) = 'CREATE USER '+ @Name
+' WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo]'
EXECUTE sp_executesql @sqlstr
END
GO
EXEC uspCreateUser 'anny';
您可以在以下网址找到更多信息:
http://www.sqlservercentral.com/Forums/Topic497615-359-1.aspx