sql >> Database teknologi >  >> RDS >> Sqlserver

Overførsel af flere værdiparametre i SSRS til lagret procedure

Jeg er nødt til at give dig noget baggrund 1.

Når du tillader SSRS-parameter at vælge flere værdier, opretter valget af flere værdier en kommaafgrænset streng af værdi som én streng

  'value1,value2,value3'

For at kontrollere værdier i en streng ved hjælp af IN operatør vi har brug for strenge sammenkædet med kommaer noget som dette ....

  'value1','value2','value3'

Din proc

Nu i din proces, når du indsætter værdier eksplicit, indsætter den flere værdier i din tabel.

  INSERT INTO Table_Value_Param
  VALUES ('value1'),       --<-- 1st value/Row
         ('value2'),       --<-- 2nd Value/Row
         ('value3')        --<-- 3rd Value/Row

og dette giver dig de forventede resultater tilbage, som når du inde i din procedure udfører en sætning som

SELECT * 
FROM Table_Name
WHERE ColumnName IN (SELECT ColumnName 
                     FROM Table_Value_Param)

På den anden side, når du forsøger at indsætte i tabel ved hjælp af SSRS rapport Parameter du tabel indsætter værdi som

  INSERT INTO Table_Value_Param
  VALUES ('value1,value2,value3')   --<-- One Row/Value containing all the values comma separated

Løsning

Opretter TVP i denne situation hjælper det ikke rigtigt, det jeg gør er at bruge dbo.Split() funktion inde i min procedure.

Du kan finde mange definitioner for split funktion online, for nogle seje, se her Split Function equivalent in tsql?

Når du har oprettet denne opdelte funktion, skal du bare bruge denne funktion i din proceduredefinition, du behøver ikke engang parametrene med tabelværdi.

Sådan noget her...

  SELECT * 
  FROM Table_Name 
  WHERE ColumnName IN ( 
                       SELECT Value
                       FROM dbo.Split(@Report_Param, ',')
                       ) 


  1. Er det muligt at kalde en posttype inde i en markør?

  2. MYSQL:vælg en del af teksten og klip den af ​​baseret på prikplacering

  3. Konverter SQL WHERE IN til JOIN

  4. Sådan tilføjer du en underformular til en formular i Access 2016