Das ist meine gespeicherte Prozedur:Zugriff auf Parameter in einer gespeicherten Netezza-Prozedur?
nzsql -u user -pw pass -c "CREATE OR REPLACE PROCEDURE INSERT_LOGIC(varchar(50),varchar(20),varchar(40)) RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC
DECLARE
t1 ALIAS FOR $1;
t2 ALIAS FOR $2;
t3 ALIAS FOR $3;
BEGIN
INSERT INTO ABC..XYZ
(select '$t1','$t2','$t3' from ABC..PQR limit 10);
END;
END_PROC;"
Die ALIAS FOR ist der einzige Weg, die ich im Internet gefunden, dies zu tun, aber ich erhalte die folgenden Fehler:
NOTICE: plpgsql: ERROR during compile of INSERT_LOGIC near line 3
ERROR: syntax error, unexpected ERROR, expecting VARIABLE or WORD at or near "t1Stuff"
Wie greife ich auf die drei "Varchar-Variablen", die ich an die gespeicherte Prozedur innerhalb derselben übergeben?
noch nicht funktioniert. Das Problem ist, dass ich die select-Anweisung zum Einfügen verwenden muss. Ich weiß, es funktioniert, wenn .. INSERT IN ABC..XYZ WERTE (t1, t2, t3). Ich brauche aber tatsächlich die Select-Anweisung cos meinen tatsächlichen Einsatz zu verwenden, ist so etwas, INSERT INTO ABC..XYZ (wählen T1, T2, T3, P1, P2, P3 von ABC..PQR Grenze 10); wobei t1, t2, t3 von den übergebenen Parametern kommen und p1, p2 und p3 von der Tabelle PQR kommen. – Macopare
Gibst Sie Zeichenfolgen auf das Verfahren eingeführt oder Spaltennamen werden? –
Sind T1, T2 und T3 alle wörtlichen Werte einfügen soll, während P1, P2 und P3 alle, was in den Spalten von PQR ist einfügen sollen? Die dynamische SQL-Lösung von Jeremy sollte für Sie funktionieren, obwohl Sie je nach Ihren Absichten auch quote_ident oder quote_literal verwenden möchten. – ScottMcG