我需要创建一些存储过程作为参数db name,表名,用户名等接收,并对它们进行一些处理。 我可以使用动态sql创建它们,但我想知道是否可以在需要db名称或表名的命令中使用变量名。
E.g。而不是
USE [MyDataBase]
CREATE LOGIN [MyUser] WITH PASSWORD=N'MyPass', DEFAULT_DATABASE=[MyDataBase]
能够拥有
DECLARE @MyDB nvarchar(100)
DECLARE @MyUser nvarchar(100)
-- .... set @MyUser here
Select @MyDB = DB_NAME()
USE @MyDB
CREATE LOGIN @MyUser WITH PASSWORD=@MyPass, DEFAULT_DATABASE= @DbName
由于
答案 0 :(得分:2)
不幸的是,这些不能参数化。
您需要使用动态SQL。
有关如何尽可能安全地执行此操作的建议,请参阅The Curse and Blessings of Dynamic SQL - Dealing with Dynamic Table and Column Names。