被视为列名的参数,而不是使用动态SQL的列值
本文关键字:动态 SQL 参数 | 更新日期: 2023-09-27 18:22:35
这是我第一次来这里,我想问一个问题。
这是我的存储过程。。。
ALTER procedure [dbo].[GetDataFromTable]
@tablename sysname,
@DocumentName nvarchar(50),
@Uploader nvarchar(50)
as
begin
if @tablename = 'Document_Data'
EXEC('Select * from Document_Data where DocumentName = ('+ @DocumentName +') and Uploader = ('+ @Uploader +')')
end
问题是…存储过程将DocumentName和Uploader参数读取为列名,而不是值本身。我已经试着使用别名和其他我从互联网上搜索到的东西,但它们不起作用。
这背后可能有什么问题?哦,顺便说一句,我是动态SQL的新手。谢谢
您应该在参数前后向动态sql添加''
字符,如下所示:
ALTER procedure [dbo].[GetDataFromTable]
@tablename sysname,
@DocumentName nvarchar(50),
@Uploader nvarchar(50)
as
begin
if @tablename = 'Document_Data'
EXEC('Select * from Document_Data where DocumentName = ('''+ @DocumentName +''') and Uploader = ('''+ @Uploader +''')')
end