1

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

这是我的存储过程...

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

这背后可能是什么问题?哦,顺便说一句,我是动态 SQL 的新手。谢谢。

4

1 回答 1

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
于 2013-07-16T07:43:22.567 回答