我希望将数据库名称作为参数传递给存储过程,并且希望在 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(使用前将#替换为@)