【问题标题】:ssrs-report : how to fix error Procedure expects parameter '@parameters' of type 'ntext/nchar/nvarchar'ssrs-report:如何修复错误过程需要“ntext/nchar/nvarchar”类型的参数“@parameters”
【发布时间】:2020-06-26 04:25:51
【问题描述】:

我的数据库中有调用表名的参数,例如我的数据库中的表名,如 GPS-RV.1_b。 然后我尝试在我的查询生成器中调用它,例如

declare @cmd nvarchar(max)
set @cmd = ' select top 100 X,Y,Z from dbo.' + @tableName
DECLARE @ParmDefinition nvarchar(100) = N'@tableName nvarchar(100)';
print @cmd
exec sp_executesql @cmd, @ParmDefinition = '@tableName';

它已经运行,但是当我尝试输入我的表名并按确定按钮时,它显示此错误

------------------

执行查询时出错。
过程需要类型为“ntext/nchar/nvarchar”的参数“@parameters”。

------------------------------
附加信息:

过程需要类型为“ntext/nchar/nvarchar”的参数“@parameters”。 (Microsoft SQL Server,错误:214)

如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617&EvtSrc=MSSQLServer&EvtID=214&LinkId=20476

------------------------------
纽扣:

好的
------------------------------

我的查询中是否缺少任何部分?还是我做错了? 感谢您的帮助和任何修复它的建议。

【问题讨论】:

标签: sql-server reporting-services ssrs-2008 ssrs-2008-r2


【解决方案1】:

只执行你的@cmd 语句而不发送参数

declare @cmd nvarchar(max)
set @cmd = ' select top 100 X,Y,Z from dbo.' + @tableName

print @cmd
exec sp_executesql @cmd

正如@Mitch Whaeat 所说,@tableName 不是参数,它只是一个变量。请记住将值分配给@tableName 变量。

【讨论】:

  • 已经在测试您的帮助,但它显示错误,例如“-”附近的语法不正确。 ------------------------------ 附加信息:'-' 附近的语法不正确。 (Microsoft SQL Server,错误:102) 如需帮助,请单击:go.microsoft.com/… ------------------------------ 按钮:确定------------------------------ "
  • 在我的数据库中,我的表有一个带有符号组合的名称,如减号 ' - ' , dot ' 。 ' 并在 '_' 下划线。
  • 这种情况下需要使用括号set @cmd = ' select top 100 X,Y,Z from dbo.[' + @tableName + ']'
  • 哇,这绝对是我想要的,非常感谢@JotaPardo 帮助我。
【解决方案2】:

您将 @cmd 声明为 NVARCHAR

set @cmd = N' select top';

exec sp_executesql N''+ @cmd +'';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 2014-12-07
    • 2018-03-01
    • 2020-01-28
    • 1970-01-01
    • 2020-10-13
    • 2017-07-16
    相关资源
    最近更新 更多