我希望将我的数据库名称作为参数传递给存储过程,我希望在where条件中使用它来设置存储过程的数据库。但是我收到了一个错误:
'。'
附近的语法不正确
示例代码
Create proc [dbo].[stored_procedure_one]
@variable1 int,
@dbname varchar(10)
as
begin
select *
from @dbname..table_name
End
有人可以建议我如何解决这个问题吗?
答案 0 :(得分:4)
你需要使用动态sql这样的东西......
Create proc [dbo].[stored_procedure_one]
@variable1 int,
@dbname SYSNAME --<-- use appropriate data type for object names
as
begin
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N' select * from ' + QUOTENAME(@dbname) + N'..table_name'
Exec sp_executesql @Sql
End
还可以使用QUOTENAME()
函数来防止可能的SQL注入攻击。