How to pass multiple values to single parameter in stored procedure

后端 未结 5 765
野趣味
野趣味 2020-12-30 06:54

I\'m using SSRS for reporting and executing a stored procedure to generate the data for my reports

DECLARE @return_value int

EXEC    @return_value = [dbo].[         


        
相关标签:
5条回答
  • 2020-12-30 07:06

    I think, below procedure help you to what you are looking for.

     CREATE PROCEDURE [dbo].[FindEmployeeRecord]
            @EmployeeID nvarchar(Max)
        AS
        BEGIN
        DECLARE @sqLQuery VARCHAR(MAX)
        Declare @AnswersTempTable Table
        (  
            EmpId int,         
            EmployeeName nvarchar (250),       
            EmployeeAddress nvarchar (250),  
            PostalCode nvarchar (50),
            TelephoneNo nvarchar (50),
            Email nvarchar (250),
            status nvarchar (50),  
            Sex nvarchar (50) 
        )
    
        Set @sqlQuery =
        'select e.EmpId,e.EmployeeName,e.Email,e.Sex,ed.EmployeeAddress,ed.PostalCode,ed.TelephoneNo,ed.status
        from Employee e
        join EmployeeDetail ed on e.Empid = ed.iEmpID
        where Convert(nvarchar(Max),e.EmpId) in ('+@EmployeeId+')
        order by EmpId'
        Insert into @AnswersTempTable
        exec (@sqlQuery)
        select * from @AnswersTempTable
        END
    
    0 讨论(0)
  • 2020-12-30 07:12

    Either use a User Defined Table

    Or you can use CSV by defining your own CSV function as per This Post.

    I'd probably recommend the second method, as your stored proc is already written in the correct format and you'll find it handy later on if you need to do this down the road.

    Cheers!

    0 讨论(0)
  • 2020-12-30 07:23

    USE THIS

    I have had this exact issue for almost 2 weeks, extremely frustrating but I FINALLY found this site and it was a clear walk-through of what to do.

    http://blog.summitcloud.com/2010/01/multivalue-parameters-with-stored-procedures-in-ssrs-sql/

    I hope this helps people because it was exactly what I was looking for

    0 讨论(0)
  • 2020-12-30 07:26

    I spent time finding a proper way. This may be useful for others.

    Create a UDF and refer in the query -

    http://www.geekzilla.co.uk/view5C09B52C-4600-4B66-9DD7-DCE840D64CBD.htm

    0 讨论(0)
  • 2020-12-30 07:29

    This can not be done easily. There's no way to make an NVARCHAR parameter take "more than one value". What I've done before is - as you do already - make the parameter value like a list with comma-separated values. Then, split this string up into its parts in the stored procedure.

    Splitting up can be done using string functions. Add every part to a temporary table. Pseudo-code for this could be:

    CREATE TABLE #TempTable (ID INT)
    WHILE LEN(@PortfolioID) > 0
    BEGIN
        IF NOT <@PortfolioID contains Comma>
        BEGIN
            INSERT INTO #TempTable VALUES CAST(@PortfolioID as INT)
            SET @PortfolioID = ''
        END ELSE
        BEGIN
             INSERT INTO #Temptable VALUES CAST(<Part until next comma> AS INT)
             SET @PortfolioID = <Everything after the next comma>
        END
    END
    

    Then, change your condition to

    WHERE PortfolioId IN (SELECT ID FROM #TempTable)
    

    EDIT
    You may be interested in the documentation for multi value parameters in SSRS, which states:

    You can define a multivalue parameter for any report parameter that you create. However, if you want to pass multiple parameter values back to a data source by using the query, the following requirements must be satisfied:

    The data source must be SQL Server, Oracle, Analysis Services, SAP BI NetWeaver, or Hyperion Essbase.

    The data source cannot be a stored procedure. Reporting Services does not support passing a multivalue parameter array to a stored procedure.

    The query must use an IN clause to specify the parameter.

    This I found here.

    0 讨论(0)
提交回复
热议问题