Hallo ihr Lieben,
in eine Funktion werden 3 Parameter übergeben "mitarbeiter integer[], vondatum date, bisdatum date", die in einem Recordset benutzt werden müssten. Folgendes funktioniert tadellos:
for r in EXECUTE 'select fid_mitarbeiter, von, bis from tagebuch.eintrag
where von between ''' || vondatum || ''' and ''' || bisdatum || '''
and fid_mitarbeiter = any(array [1, 2, 14])
group by fid_mitarbeiter, von, bis
order by fid_mitarbeiter, von;' loop
end loop;
Ich komme allerdings nicht weiter, da meine bisherigen Versuche "any(array [1, 2, 14])" durch die Arrayvariable "mitarbeiter" zu ersetzen, gescheitert sind.
Kann jemand helfen? Im Voraus schon mal vielen Dank.
Gruß
Stefanie
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Vielen Dank für die schnelle Antwort,
ich hatte auch gedacht, dass es so funktionieren müsste und hatte in der Richtung (fast) alle Varianten versucht.
Allerdings hätte ich mir die erscheinenden Fehlermeldungen nicht nur ansehen, sondern auch mal gedanklich auseinander pflücken sollen, was ich nach Deinem Hinweis noch mal intensiv gemacht habe und bingo:
Die richtige Syntax ist:
... fid_mitarbeiter = any(''' || mitarbeiter::text || ''') ...
also drei Apostrophe und ein typecasting auf text. Dies ist seltsamerweise bei den date-Variablen nicht notwendig. Hier erfolgt offensichtlich ein internes typecasting.
Nochmals vielen Dank für die Hilfe.
Stefanie
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen