数据库名称作为存储过程 SQL Server 中的参数

2023-12-05

我希望将数据库名称作为参数传递给存储过程,并且希望在 where 条件中使用它来设置存储过程的数据库。但我收到一个错误:

“.”附近的语法不正确

示例代码

Create proc [dbo].[stored_procedure_one]
    @variable1 int,
    @dbname varchar(10)
as
begin
    select * 
    from @dbname..table_name
End

有人可以建议我如何解决这个问题吗?


您将需要使用动态 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 注入攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库名称作为存储过程 SQL Server 中的参数 的相关文章