Ich bin mein versuchen, eine Orakel-Prozedur von etwas wie unten zu Netezza zu konvertieren und einige Probleme konfrontiert, wenn ausgeführt, keine Kompilierungsfehler. Die Prozedur wurde erfolgreich in Oracle ausgeführt. Bei der Aufgabe handelt es sich um einen Stapelverarbeitungsprozess, ohne dass erwartet wird, Eingabeparameter zurückzugeben oder zu übernehmen und die Tabelle zu durchlaufen, um eine SQL-Anweisung dynamisch vorzubereiten. Logic ist gut gebaut, da es in Oracle kein Problem gibt.Netezza gespeicherte Prozedur Fehler
CREATE OR REPLACE PROCEDURE proc1()
RETURNS CHARACTER VARYING (ANY) EXECUTE AS OWNER LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
lv_sql varchar(4000);
lv1 varchar(4000);
lv2 varchar(4000);
lv3 varchar(4000);
lv4 varchar(4000);
lv5 varchar(4000);
lv_value varchar(1000);
lv_str_cnt integer;
lv_ret_string VARCHAR(1000);
BEGIN
FOR c1 IN (SELECT * from test)
LOOP
IF lv_str_cnt = 0 THEN
lv_ret_string := '''' || c1.col1 || '''';
ELSE IF lv_str_cnt IS NULL THEN
lv_ret_string := NULL;
ELSE
lv_ret_string := '''' || c1.col2 || '''';
END IF;
.............
.............
lv_sql := lv_sql || lv1 || lv2 || lv3 || lv4;
EXECUTE IMMEDIATE lv_sql;
END LOOP;
END;
END_PROC;
bekomme ich folgende Fehlermeldung, wenn die Prozedur „Syntaxfehler, unerwarteter WORD an oder nahe Varchar2“ ausgeführt
Varchar2 ist ein Oracle-Datentyp und ich kann bestätigen, es Varchar von Netezza modifiziert wird, in mein Verfahren in allen Orten. Ich suchte auf Google nach guten Beispielen für die Erstellung einer Prozedur, aber leider konnte ich nicht die gewünschte Hilfe bekommen.
Auch gibt es bestimmte Block-Code, den ich als Funktion erstellen und wiederverwenden möchte. Leider auch mit der Funktionssyntax.
Schätzen Sie Ihre Hilfe
In Netezza ist kein VARCHAR2 vorhanden. Verwenden Sie NVARCHAR. Überprüfen Sie den Typ für lv_ret_string. – HGF
@HGF, Ja zugestimmt, ich habe es schon geändert nachdem Lars darauf hingewiesen hat. Ich bearbeite das Thema auch. Aber trotzdem habe ich denselben Fehler. – Venkat
@HGF, alles mit dem Cursor für die Schleife bitte? – Venkat