尝试执行报告时遇到此错误。我传递一个多值参数(OrderNo),但无法使其工作。参数是一个订单#,查询将获取该#并返回有关该订单的一些信息并将其放在报表上。
目前,我的参数允许多个值,并通过查询填充可用值。
在我的数据集查询中,我的where语句说:
WHERE x.order_no IN (@OrderNo)
我的数据集参数值为:
=SPLIT(Parameters!OrderNo.Value, ",")
我需要的只是这个查询返回多行,每个订单#一个。然后我可以将其纳入报告。
答案 0 :(得分:0)
使用带有多值参数的存储过程时出现此问题。我要做的是创建一个拆分字符串函数Like This One.
CREATE FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
SET @string=REPLACE(@string,'(,)','$$')
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(REPLACE(SUBSTRING(@string, @start, @end - @start),'$$','(,)'))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
END
并在where子句中使用它。
Where something IN (select *from dbo.fnSplitString('Querying SQL Server',','))