parameter in sql-Abfrage :SSRS
Ich bin mit oracleclient
Anbieter. Ich Frage mich, wie verwende ich den parameter in der Abfrage.
select * from table A where A.a in ( parameter).
Der parameter sollte ein multivalue
parameter.
wie kann ich einen Datensatz erstellen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach. Fügen Sie den parameter in den Bericht und stellen Sie sicher, überprüfen Sie es aus, als mehrwertige. Dann in der Registerkarte "Daten" und gehen in die Abfrage Bearbeiten klicken Sie auf die " ... " - button zum Bearbeiten des dataset. Unter der Registerkarte "Parameter" erstellen Sie ein mapping-parameter so sieht es aus, so etwas wie dieses (offensichtlich haben Sie unterschiedliche Namen für die Parameter):
Dann in der Registerkarte "Abfrage" verwenden, die coorelated sub-Abfrage, wie dein Beispiel oben. Ich habe das oft getan mit SQL-server und es gibt keinen Grund, es sollte nicht mit Oracle arbeiten seit SSRS sich um eine ANSI-konforme SQL-Anweisung, die es übergeben wird, um Oracle.
Können Sie nicht eine variable in der Liste im oracle direkt. Sie können jedoch brechen, außer eine durch Komma getrennte Liste in den Zeilen, die verwendet werden können in Ihrem Unterabfrage. Den string txt ersetzt werden kann durch eine beliebige Anzahl von Werten, getrennt durch ein Komma.
Die Abfrage funktioniert so, dass zunächst zählen Sie die Anzahl der Kommas in den text-string. Es tut dies durch die Verwendung einer reqular Ausdruck zu entfernen Sie alle nicht Kommas, und dann zählt die Länge der übrigen.
Anschließend wird eine Oracle - "trick" zurück, die Zahl + 1 Zahl der Zeilen, die von der dual-Tabelle. Anschließend wird der regexp_substr-Funktion herausziehen jedem auftreten.
Erstens in SSRS mit einer Oracle-OLEDB-Verbindung, die Sie verwenden müssen, der Doppelpunkt, nicht das @ - symbol, z.B. :parameter nicht @parameter, aber dann sind Sie nicht in der Lage, dies zu tun als ein multi-valued parameter, es akzeptiert nur einzelne Werte. Noch schlimmer, wenn Sie mit einer ODBC-Verbindung müssen Sie verwenden Sie das Fragezeichen, indem Sie sich z.B. ? nicht @parameter und dann die Reihenfolge der Parameter ist wichtig, und Sie können auch nicht mehrere Werte haben. Die einzigen Möglichkeiten, die Sie mit Links sind ist mit ein Ausdruck, eine Abfrage zu erstellen (join () - Funktion für die param) oder der Aufruf einer stored proc.
Die gespeicherte Prozedur option ist am besten, da die SSRS kann mit den Parametern für gespeicherte Prozeduren auf dem SQL Server und Oracle sehr sauber, aber wenn das nicht eine option, die Sie verwenden können diesen Ausdruck:
Oder wenn die parameter-Werte sind Zeichenfolgen, die Apostrophe müssen um Sie herum:
Wenn Sie mit der rechten Maustaste auf das dataset, können Sie die Option "Datensatz-Eigenschaften" und verwenden Sie dann die Schaltfläche "fx", um die Abfrage Bearbeiten, die als ein Ausdruck, anstatt Sie mit dem Abfrage-designer, die nicht zulassen, werden Sie es Bearbeiten, wie ein Ausdruck.
Dieser Ausdruck Methode ist beschränkt auf eine Höchstgrenze von über 1000 Werten, aber wenn Sie haben, dass viele dies ist der falsche Weg, es zu tun sowieso, Sie lieber an einen Tisch.
Ich glaube nicht, dass Sie können einen parameter in einer solchen situation.
(Es sei denn, oracle und die Sprache, die Sie verwenden unterstützt array-Typ-Parameter ? )
Den Parametern in oracle definiert sind als ":parametername", also in der Abfrage, die Sie verwenden sollten so etwas wie:
Fügen Sie die parameter, um das Parameter-Ordner in den Bericht an und markieren Sie die checkbox "mehrere Werte Zulassen".
Als Victor Grimaldo erwähnt... unten hat bei mir sehr gut. Sobald ich die
:parameter
in meiner SQL-Abfrage in SSRS dataset1.. er fragte mich, zu geben Sie die Werte für diese Parameter, für welche ich bereits erstellt, SSRS Parameter.SELECT * FROM table a WHERE VALUE IN (**:parametername**)
Dank Victor.