sql-server - ssrs多值参数存储过程

标签 sql-server reporting-services parameter-passing

我在 SSRS (2008) 中创建了一个报告,该报告的数据来自 MS SQL 中的一个存储过程。

我想要一个多值参数(做了一百万次但不是用 SP)

我已经根据查询创建了参数,勾选了允许多个值并修改了 SP 以使用 IN 语句(所以 IN (@Param))

它只是行不通 SQL Server 探查器显示它已通过

@RC=N'1,2'

如果我选择一个值,它会起作用(返回一个值)

我看过关于拆分加入的帖子,但我已经尝试了所有这些都无济于事。

任何想法(肯定很简单!!)理想情况下 id 也希望能够返回 NULL(或者这要求太多了吗?

谢谢大家

最佳答案

在你的数据库中创建这个函数:

USE [YourDatabase]
GO

/****** Object:  UserDefinedFunction [dbo].[SplitListToTable]    Script Date: 5/21/2018 8:13:29 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


--==========================================================
-- Author: Gugg
-- Created: 2015-10-06
-- Description: Converts a delimited string into a table of values.  Based heavily on code from this url:
--              https://social.msdn.microsoft.com/Forums/sqlserver/en-US/0ead7ceb-3fdd-4625-aa82-1d4195f984b1/passing-multivalue-parameter-in-stored-procedure-ssrs
-- Modification History:
--===========================================================

CREATE FUNCTION [dbo].[SplitListToTable]
    (
      @List NVARCHAR(2000) ,
      @SplitOn NVARCHAR(5)
    )
RETURNS @RtnValue TABLE
    (
      Id INT IDENTITY(1, 1) ,
      Value NVARCHAR(100)
    )
AS
    BEGIN
        WHILE ( CHARINDEX(@SplitOn, @List) > 0 )
            BEGIN 
                INSERT  INTO @RtnValue
                        ( Value
                        )
                        SELECT  Value = LTRIM(RTRIM(SUBSTRING(@List, 1, CHARINDEX(@SplitOn, @List) - 1))); 
                SET @List = SUBSTRING(@List, CHARINDEX(@SplitOn, @List) + LEN(@SplitOn), LEN(@List));
            END; 

        INSERT  INTO @RtnValue
                ( Value )
                SELECT  Value = LTRIM(RTRIM(@List));
        RETURN;
    END;



GO

然后你可以像这样解析你的参数:

SELECT *
FROM YourDatabase.dbo.YourTable
WHERE YourColumn IN(SELECT value FROM dbo.SplitListToTable(@YourParameter, ','))

关于sql-server - ssrs多值参数存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50449056/

相关文章:

vb.net - 从 VB6 转换为 VB.Net 后字符串默认参数值问题

sql-server - SQL Server 2k5 内存消耗?

sql-server - SQL 服务器 : Why xp_cmdshell is disabled by default?

sql - SQL Server 中 CTE 的最大递归次数是多少?

c# - .NET Architectural issue : 2 Web Services, 如何更改在运行时使用哪一个?

reporting-services - Tablix 上的 SSRS 分页符带有行号,默认情况下只有一个行组并且没有给出组表达式

c# - 如何实现类似 Exchange 的内部 SQL Server 可用性监控

datetime - 如何使用SQL Reporting Services获得当月的最后一天

Python:类型化方法参数

python copy() 但列表似乎是通过复制传递的