Hallo,
ich habe das Problem, ein Prepared Statement nicht in einer Stored Procedure ausführen zu können.
Mein Code sieht folgendermassen aus:
Immer wenn ich die Stored Procedure ausführen möchte, erhalte ich folgende Fehlermeldung:Code:... PREPARE __insertstatement__ (integer, varchar, varchar) AS INSERT INTO analysis.test1 ("id", "value", "kling") VALUES ($1, $2, $3); WHILE t_min <= t_max LOOP .... FOR result IN SELECT ... EXECUTE __insertstatement__ (1::integer, 'blubb'::varchar, 'klingwlin'::varchar); END LOOP; .... END LOOP; ....
Die Argumenttypen sind ordentlich gecastet und der Funktionsnahme ist auch beim Aufruf der Gleiche wie bei der Erstellung des Prepared Statement.Code:FEHLER: Funktion __insertstatement__(integer, character varying, character varying) existiert nicht LINE 1: SELECT __insertstatement__ (1, 'blubb'::varchar, 'klingwlin... ^ HINT: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen. QUERY: SELECT __insertstatement__ (1, 'blubb'::varchar, 'klingwlin'::varchar) CONTEXT: PL/pgSQL function "create_site_stats" line 268 at EXECUTE statement ********** Error ********** FEHLER: Funktion __insertstatement__(integer, character varying, character varying) existiert nicht SQL state: 42883 Hint: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen. Context: PL/pgSQL function "create_site_stats" line 268 at EXECUTE statement
Hat vielleicht irgendjemand eine Idee, was da falsch läuft?
Vielen Dank
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Und wie kann ich dann das Prepared Statement in einer Stored Procedure ausführen?
Einfach den Code plain in die Funktion schreiben, das ist dann schon ein Prepared Statement.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Also...bitte einmal zur Erklärung:
(1) Postgres wird doch nicht ein einfaches INSERT Statement selbständig als Prepared Statenent behandeln, oder? Um ein Prepared Statement nutzen zu können, muss man es doch erst erstellen, so dass das System die Checks nur einmal ausführt.
(2) Wenn ich nicht den EXECUTE Befehl nutzen kann, um das Prepared Statement im Body der Stored Procedure auszuführen, wie kann ich es denn dann aufrufen.
Vielen Dank für weitere Antworten
Alle SQL-Anweisungen im Quelltext der Funktion sind automatisch Prepared Queries.
WIe gesagt, einfach Anweisung in den Quelltext schreiben.(2) Wenn ich nicht den EXECUTE Befehl nutzen kann, um das Prepared Statement im Body der Stored Procedure auszuführen, wie kann ich es denn dann aufrufen.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen