Benutzer mit den meisten Antworten
Openquery mit Parameter in inline Function

Frage
-
Hallo an alle,
ist es nicht möglich in einer Inline Function einen Parameter mitzugeben, welcher dann die SQL Abfrage einer Openquery beeinflusst?
Oder denke ich einfach nur zu kompliziert?
CREATE FUNCTION dbo.fnLIMS_D50 (@PRBTYP varchar(30)) RETURNS TABLE AS RETURN --declare @PRBTYP varchar(30) declare @tsql varchar(8000) --set @PRBTYP='C100' select @tsql = ' SELECT TSTERC, TSTERN, PRBID, TSTELE, ERSDAT, ERSDAT_timestamp, ERSTIM,PRBDAT,PRBZEI FROM OPENQUERY(AS400_DB2_OE0000DAT, ''select A.TSTERC,A.TSTERN,A.PRBID,A.TSTELE,B.ERSDAT,B.ERSTIM,B.PRBDAT,B.PRBZEI, DATE(substr(B.ERSDAT, 1, 4)||''''-''''||SUBSTR(B.ERSDAT, 5, 2)||''''-''''||SUBSTR(B.ERSDAT, 7, 2)) as ERSDAT_timestamp, case WHEN LENGTH(TRIM(B.PRBDAT))= 7 then DATE(substr(B.PRBDAT, 4, 4)||''''-''''||SUBSTR(B.PRBDAT, 2, 2)||''''-''''||SUBSTR(B.PRBDAT, 1, 1)) --Länge nur 7 Zeichen: 1092008 WHEN LENGTH(TRIM(B.PRBDAT))= 8 then DATE(substr(B.PRBDAT, 5, 4)||''''-''''||SUBSTR(B.PRBDAT, 3, 2)||''''-''''||SUBSTR(B.PRBDAT, 1, 2)) --Länge nur 8 Zeichen: 27082008 END as PRBDAT_timestamp from OE0000DAT.OE02000PF A JOIN OE0000DAT.OE01600PF B on A.PRBID = B.PRBID where B.PRBID in (select C.PRBID from OE0000DAT.OE01600PF C where PRBTYP=''''' + @PRBTYP + ''''' and SPEZIF=''''6/1'''' order by PRBID desc) and A.TSTELE=''''X50%'''' '') ' EXEC(@tsql)
Antworten
-
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Dienstag, 7. Juni 2016 10:13
- Als Antwort markiert Toot_Braunstein Dienstag, 7. Juni 2016 19:33
Alle Antworten
-
Hallo,
die Funktion ist vom Aufbau her schon mal falsch, wenn man mehr als eine SQL Anweisung hat, muss man den ganzen Code Rumpf in einen BEGIN/END Block setzten.
In einer Funktion kann man keine Stored Procedures oder dyn SQL Aufrufen, das geht nicht. Versucht man es trotzdem, gibt es bereits bei der Anlage der UDF die Fehlermeldung "Ungültige Verwendung eines EXECUTE STRING-Operators mit Nebenwirkungen innerhalb einer Funktion.".
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Dienstag, 7. Juni 2016 10:13
-
Hallo Olaf, die Openquery möchte ich aber als Quelle für SSRS nutzen. Der Parameter soll vom Bericht gesetzt werden bzw. vom User bei Berichtsaufruf. ich habe leider noch nichts gefunden wie ich eine Stored Procedure in SSRS in einer schon bestehenden Abfrage nutzen kann.
Das heißt ich möchte eine Stored Procedure im Abfrage Designer einer anderen Dataset nutzen. Damit ich Schlüssel, Group by und co nutzen könnte. Das scheint aber nicht möglich zu sein. Oder??
- Bearbeitet Toot_Braunstein Dienstag, 7. Juni 2016 08:55
-
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Dienstag, 7. Juni 2016 10:13
-
Schade du warst doch schon zu schnell. Das hatte ich dann noch durch einen Zufall gefunden. Danke trotzdem!
kann man aber auch im Abfrage Designer einer bestehenden Dataset eine Stored Procedure nutzen? Die Tabellenstrukur (wenn eine solche zurückgegeben wird) steht ja schon fest und man könnte die Spalten so miteinander verbinden. Das wäre mir das liebste! So muss ich bei SSRS immer erst alles programmieren.
-
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Dienstag, 7. Juni 2016 10:13
- Als Antwort markiert Toot_Braunstein Dienstag, 7. Juni 2016 19:33