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 variableNAME
und Tabelle SpalteNAME
. 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. mitv_
. - 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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es so Aussehen:
Sollten Sie verwenden Präfix vor jede variable, weil Sie Konflikte verursacht.