【问题标题】:Parameters regarded as column names, not column values using Dynamic SQL参数被视为列名,而不是使用动态 SQL 的列值
【发布时间】:2023-03-28 15:30:01
【问题描述】:

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

这是我的存储过程...

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

【问题讨论】:

    标签: c# asp.net sql dynamic


    【解决方案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
    

    【讨论】:

    • 谢谢您,先生。我之前没想到。谢谢。我如何将其视为答案?
    • @JephElijay 如果答案对您有帮助,请不要忘记接受答案以关闭问题并关闭问题。您也可以为答案投票。
    • @JephElijay 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多