如何在commanda中使用变量,期望数据库,表,用户名

时间:2011-02-08 17:48:22

标签: sql-server tsql stored-procedures

我需要创建一些存储过程作为参数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 

由于

1 个答案:

答案 0 :(得分:2)

不幸的是,这些不能参数化。

您需要使用动态SQL。

有关如何尽可能安全地执行此操作的建议,请参阅The Curse and Blessings of Dynamic SQL - Dealing with Dynamic Table and Column Names

相关问题