ssrs-report : 如何修复错误 过程需要类型为 'ntext/nchar/nvarchar' 的参数'@parameters'



我的数据库上有调用表名的参数,例如我的数据库中的表名,如 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 服务器,错误: 214( 如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617&EvtSrc=MSSQLServer&EvtID=214&LinkId=20476 ------------------------------ 按钮: 还行 ------------------------------

我的查询中有什么遗漏的部分吗??还是我做错了方式?? 感谢您的帮助和任何修复建议。

只需执行您的@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变量。

你需要在星形参数中添加 N

exec sp_executesql @SCRIPT, N'@R INT out, @C019CodigoMCRE BIGINT , @C138Cedula VARCHAR(13) , @C019JsonDetalle VARCHAR(MAX) ', @R out, @C019CodigoMCRE =  @C019CodigoMCRE_, @C138Cedula = @C138Cedula_, @C019JsonDetalle= @C019JsonDetalle_

你声明@cmd为 NVARCHAR

set @cmd = N' select top';

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

最新更新