C# 使用动态SQL将参数视为列名,而不是列值

C# 使用动态SQL将参数视为列名,而不是列值,c#,asp.net,sql,dynamic,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 = ('+ @Document

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

这是我的存储过程

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的新手。谢谢。

您应该在参数前后添加
'
字符,如下所示:

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
您应该在参数前后添加
'
字符,如下所示:

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

谢谢你,好心的先生。我之前没这么想。谢谢我该如何看待这个答案?@JephElijay如果答案对你有帮助,不要忘记接受答案来结束问题,结束问题。您也可以投票支持答案。@JephElijay谢谢!谢谢你,好心的先生。我之前没这么想。谢谢我该如何看待这个答案?@JephElijay如果答案对你有帮助,不要忘记接受答案来结束问题,结束问题。您也可以投票支持答案。@JephElijay谢谢!