在存储过程中传递多值参数

时间:2014-11-11 17:49:29

标签: stored-procedures

Firstname             emp_Fullname
--------------------------------------
chetan                Patel, Chetan
mike                  Shah, Mike                  
ronie                 Desai, Ronie


create proc stored_procedure
    @firstnamer varchar(max)
    @fullname varchar(max)
as
begin
     select ......
     from....
     where Firstname in (SELECT Value FROM dbo.FnSplit(@firstname,','))
     --and emp_Fullname in (SELECT Value FROM dbo.FnSplit(@fullname,','))

我想要以下声明的结果

exec stored_procedure 'chetan,ronie', 'Patel, Chetan,Shah, Mike'

如何在给定存储过程中传递超过2个emp_fullname参数?以下是我的函数dbo.FnSplit,它适用于多值Firstname参数,但不适用于多值fullname参数。

ALTER FUNCTION [dbo].[FnSplit]
(
@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 

1 个答案:

答案 0 :(得分:0)

中的名字(SELECT值FROM dbo.FnSplit(@ firstname,'|')) 和emp_Fullname(SELECT Value FROM dbo.FnSplit(@fullname,'|'))

并且我认为仍然在SSRS中双击数据集单击parmater而不是默认值选择表达式并将其设置为“join(@ firstname.value,”|“)”和其他“join”的相同内容(@ fullname.value ,“|”)“现在运行它。通过上述程序可以找到多个valye参数。 感谢我的自我大声笑:)我花了3天时间想到,以为你们可以使用它了!