2

I need to split pipe separated values which I'm getting from aspx.cs drop-down value list. Those drop-down will pass the values to Stored Procedure where I have written split function to spit those pipe separated string into comma separated values. It's working fine for pipe separated values but If I pass single value(not separated by pipe) it's not working. I want this to be done for both pipe separated and non- separated values.

Stored Procedure:

ALTER PROCEDURE [dbo].[PROC_RPT_HOSTLISTINGREISSUANCECOMBINED] 
      @i_STARTDATE     VARCHAR(20),      
      @i_ENDDATE     VARCHAR(20),      
      @i_REQUESTTYPE  VARCHAR(50),      
      @i_AGENTID   VARCHAR(20),
      @i_VALIDATIONTYPE VARCHAR(50),    
      @i_STATUS   VARCHAR(20)  

AS
BEGIN
    SET NOCOUNT ON;


   SELECT A.Cust_ID AS [Cust_ID]      
      ,A.Card_Holder_Name AS [Card_Holder_Name]             
      ,A.Request_Time AS [Request_Time] 
      ,convert(varchar,A.Request_Date,103) AS [Request_Date]        
      ,A.Request_Type AS [Request_Type]      
      ,A.Account_Number AS [Account_Number] 
      ,A.Name as [Name]
       ,A.Relation AS [Relation]      
      ,A.Telephone AS [Telephone]            
      ,A.Reason AS [Reason]      
      ,A.Destination AS [Destination]      
      ,A.Branch_Code AS [Branch_Code]      
      ,A.Branch_Name AS [Branch_Name]      
      ,A.Charges AS [Charges]      
      ,A.Remarks AS [Remarks]      
      ,A.CardNo AS [CardNo]    
      ,A.PBand as [PBand]   
      ,A.ReviewerId As[ModifiedBy]   
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Mother''s Maiden Name') as Mother_Maiden_Name      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'DOB') as DOB      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Last 2 Transactions') as Last2_Transactions      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Phone or Fax') as Phone_or_Fax      
      ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Email') as Email         
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Address') as Address      
      ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Joint Applicant') as Joint_Applicant      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Super Saver') as Super_Saver      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Sweep In') as Sweep_In      
   ,dbo.UST_GetMandatoryChecksHotListings(A.HLID,'Nominee') as Nominee      
      ,A.AgentId AS [AgentId]      
   ,A.AccountDebited AS AccountDebited 
   ,A.ReissuanceRequested AS [ReissuanceRequested]  

      ,B.Request_Time AS [Request_Time_Flag]      
   ,B.Request_Type AS [Request_Type_Flag]      
   ,B.Reason AS [Reason_Flag]      
   ,B.Destination AS [Destination_Flag]      
   ,B.Branch_Code AS [Branch_Code_Flag]      
   ,B.Branch_Name AS [Branch_Name_Flag]      
   ,B.Charges AS [Charges_Flag]      
   ,B.Remarks AS [Remarks_Flag]      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Mother''s Maiden Name') as Mother_Maiden_Name_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'DOB') as DOB_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Last 2 Transactions') as Last2_Transactions_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Phone or Fax') as Phone_or_Fax_Changed_Flag      
      ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Email') as Email_Changed_Flag         
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Address') as Address_Flag      
      ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Joint Applicant') as Joint_Applicant_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Super Saver') as Super_Saver_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Sweep In') as Sweep_In_Changed_Flag      
   ,dbo.UST_GetChangedMandatoryCheckList(B.New_MadatoryList,'Nominee') as Nominee_Changed_Flag      
   ,a.Reference_Number      
   ,convert(varchar,a.HotListSystemDate,103) + ' ' + convert(varchar,a.HotListSystemDate,108) as [HotListSystemDate]      
 ,HotListSystemDate as [sdt]      
   FROM TBL_HOT_LISTINGS A with(nolock) LEFT OUTER JOIN      
   TBL_HOST_LISTINGS_UpdatedStatus B with(nolock) ON A.HLID = B.HLID      

  WHERE  

  A.Request_Type in (select * from [dbo].[fnSplit](@i_REQUESTTYPE,'|')) AND      
  A.AgentId LIKE case when @i_AGENTID = 'ALL' then A.AgentId ELSE @i_AGENTID  END      
   AND      
  A.Approved = case when @i_STATUS='A' then A.Approved else  @i_STATUS end    
   AND  
   A.ValidationDesc=Case  when @i_VALIDATIONTYPE='ALL' then A.ValidationDesc else @i_VALIDATIONTYPE end   
   AND
   convert(smalldatetime,convert(varchar,Request_Date,103),103)        
  BETWEEN       
   convert(smalldatetime,convert(varchar,@i_STARTDATE,103),103) AND       
   convert(smalldatetime,convert(varchar, @i_ENDDATE,103),103)      
         order by sdt


         END

Split Function:

ALTER FUNCTION [dbo].[fnSplit](
    @sInputList VARCHAR(8000) -- List of delimited items
  , @sDelimiter VARCHAR(8) = ',' -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(8000))

BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
 BEGIN
 SELECT
  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

 IF LEN(@sItem) > 0
  INSERT INTO @List SELECT @sItem
 END

IF LEN(@sInputList) > 0
 INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END

Aspx.cs page drop down values:

case ReportNames.GeneralReports.ATM_CARD_HOTLISTING_REISSUANCE_COMBINED_REPORT:
                        TRAgentID.Visible = true;
                        TRRequestType.Visible = true;

                        ddlRequestType.Items.Clear();
                        ddlRequestType.Items.Add(new ListItem("ALL", "ALL"));
                        ddlRequestType.Items.Add(new ListItem("HOT-LISTING", "HOT-LISTING"));
                        ddlRequestType.Items.Add(new ListItem("REISSUANCE", "REISSUANCE"));
                        ddlRequestType.Items.Add(new ListItem("HOT-LISTING AND REISSUANCE", "HOT-LISTING AND REISSUANCE"));

                        ddlRequestType.Items.Add(new ListItem("COMBINED REPORT OF “REISSUE CARD” & “HOTLIST & REISSUE CARD”", "REISSUE CARD|HOTLIST & REISSUE CARD"));
                        ddlRequestType.Items.Add(new ListItem("COMBINED REPORT OF “HOTLIST CARD” & “HOTLIST & REISSUE CARD”", "HOTLIST CARD|HOTLIST & REISSUE CARD"));
                        ddlRequestType.Items.Add(new ListItem("COMBINED REPORT OF “REISSUE PREPAID CARD” & “HOTLIST & REISSUE PREPAID CARD”", "REISSUE PREPAID CARD|HOTLIST & REISSUE PREPAID CARD"));
                        ddlRequestType.Items.Add(new ListItem("COMBINED REPORT OF “HOTLIST PREPAID CARD” & “HOTLIST & REISSUE PREPAID CARD”", "HOTLIST PREPAID CARD|HOTLIST & REISSUE PREPAID CARD"));
                        ddlRequestType.Items.Add(new ListItem("COMBINED REPORT (ALL ABOVE MENTIONED 4 REQUEST TYPES)", "REISSUE CARD|HOTLIST & REISSUE CARD|HOTLIST CARD|REISSUE PREPAID CARD|HOTLIST & REISSUE PREPAID CARD|HOTLIST PREPAID CARD"));

                        ddlRequestType.Items.FindByValue("ALL").Selected = true;

                        TRValidationType.Visible = true;
                        TRRequestStatus.Visible = true;
                        TRComplaintStatus.Visible = false;
                        TRTransactionType.Visible = false;
                        TRLeadProducts.Visible = false;
                        TRRequestStatus.Visible = true;
                        TRCallTypePanel.Visible = false;
                        TRSMSRequestName.Visible = false;
                        TRSMSStatus.Visible = false;
                        FillValidationTypes();
                        FillAgentIDs();
                        break;

Please let me know if you need clear and more information.

User
  • 153
  • 2
  • 12
  • 1
    I think a better approach would be to do the splitting on the c#, and simply send the stored procedure a table valued parameter. [Read this](http://stackoverflow.com/a/24881759/3094533) for a step-by-step description on how to do it. – Zohar Peled May 26 '15 at 09:14
  • What version of sql server are you using? – Zohar Peled Jun 15 '15 at 12:58

0 Answers0