参数被视为列名,而不是使用动态SQL的列值

时间:2013-07-16 07:42:04

标签: c# asp.net sql dynamic

这是我第一次来这里,我想问一个问题。

这是我的存储过程...

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参数作为列名读取,而不是值本身。我已经尝试使用别名和其他我从互联网上搜索过的东西,但它们不起作用。

这可能是背后的问题?哦,BTW我是Dynamic SQL的新手。感谢。

1 个答案:

答案 0 :(得分:1)

您应该在参数之前和之后向动态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