gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:01:17 34 4
gpt4 key购买 nike

我在 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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com