sql >> Databasteknik >  >> RDS >> Sqlserver

Skickar flera värdeparametrar i SSRS till lagrad procedur

Okej, jag måste ge dig lite bakgrund först.

När du tillåter att SSRS-parametern väljer flera värden skapar valet av flera värden en kommaavgränsad värdesträng som en sträng

  'value1,value2,value3'

För att kontrollera värden i en sträng med IN operator vi behöver strängar sammanlänkade med kommatecken ungefär så här ....

  'value1','value2','value3'

Din proc

Nu i din proc när du infogar värden uttryckligen infogar den flera värden i din tabell.

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

och detta ger dig tillbaka de förväntade resultaten som när du i din procedur kör en sats som

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

Å andra sidan när du försöker infoga i en tabell med hjälp av SSRS-rapportparametern infogar du ett värde som

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

Lösning

Skapar TVP i den här situationen hjälper det inte riktigt, vad jag gör är att använda dbo.Split() funktion i min procedur.

Du kan hitta många definitioner för delad funktion online, för några coola, ta en titt här Split Function equivalent in tsql?

När du väl har skapat den här delade funktionen använd bara den här funktionen i din procedurdefinition, du behöver inte ens parametrarna för tabellvärde då.

Något sånt här...

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


  1. Snabbt enkelt sätt att migrera SQLite3 till MySQL?

  2. Hur man visar en sträng som är på två olika språk (Hindi/engelska) i php

  3. Hur använder man vitlistor och preparerade uttalanden med Postgresql i php?

  4. Dolt fält Data infogas inte i Mysql