String range richtig ist, warum immer noch bekommen PLS-00215: String Länge Einschränkungen müssen im Bereich (1 ..32767)

CREATE FUNCTION GET_NAME( V_CODE VARCHAR2) RETURN VARCHAR2
AS
    NAME VARCHAR2(242);
BEGIN
    SELECT DISTINCT FACT_NAME
    INTO NAME
    FROM TABLEXXX
    WHERE FACT_CODE = V_CODE;
RETURN NAME;
END;

Warum auch definiert VARCHA2 mit der Länge von 242, es zeigt immer noch diesen Fehler? Zu Fremd.

String-Länge-Einschränkungen müssen im Bereich (1 .. 32767)

  • Du bist fehlt ein Semikolon ;. Sie haben eine variable NAME und Tabelle Spalte NAME. Fügen Sie das Semikolon und benennen Sie Ihre Variablen, so dass Sie nicht mehr in Konflikt mit der Tabelle Spalte name. Die übliche Konvention ist es, Präfix PL/SQL-Variablen z.B. mit v_.
  • Vielen Dank für Ihre Beratung und Hilfe. Das fehlende Semikolon ist die typo, wenn ich poste diese Frage. Neu definieren Sie die variable name zu sehen, es funktioniert oder nicht.
  • Ich kann nicht Ihr problem reproduzieren. Dein code kompiliert bei mir gut in 12c, nachdem ich eine test-Tabelle. Können Sie buchen möchten, ein sscce, vielleicht mit sqlfiddle.com
  • Überprüfen Sie die Spalte FACT_NAME definition in TABLEXXX wie varchar2 Länge und auch überprüfen FACT_CODE ist Primärschlüssel. Wenn das nicht die Antwort sein, aber es wird uns helfen zu verstehen, ur-Ausgabe in mehr details.
  • Nicht sicher, warum der obige code wird nicht richtig funktionieren. Nachdem ich änderte den Namen der Variablen durch hinzufügen von Präfix, um Konflikte zu vermeiden, es funktioniert jetzt.
InformationsquelleAutor Erica Zhang | 2015-08-13
Schreibe einen Kommentar