PLS-00103: stießen auf das symbol "end-of-file", wenn Sie erwarten, einen der folgenden Schritte: starten Sie die Funktion pragma-Verfahren
ich weiß, die Antwort ist vor der Frage, aber ich bin nur starrte blind auf meinen code.
was ist falsch mit meiner Funktion???
anderen Beiträge sagen, es fehlt ein ; aber ich kann es einfach nicht finden.
FUNCTION checkIBAN
( p_IBAN in varchar2 )
RETURN varchar2
is
v_landcode varchar2(2);
v_lengte number(2);
v_omgezettelandcode varchar2;
v_teller number(2) DEFAULT 1;
n number(9);
d varchar2;
BEGIN
v_landcode := SUBSTRING(p_IBAN, 1, 2);
select lengte
into v_lengte
from IBAN
where code = v_landcode;
if p_IBAN.LENGTH != v_lengte
then return 'F';
end if;
v_omgezettelandcode := SUBSTRING(p_IBAN, 5) || SUBSTRING(p_IBAN, 1, 4);
WHILE v_teller < v_omgezettelandcode.LENGTH LOOP
select getal
into SUBSTRING(v_omgezettelandcode, v_lengte, v_lengte)
from abc
where SUBSTRING(v_omgezettelandcode, v_lengte, v_lengte) = letter;
v_teller := v_teller + 1;
END LOOP;
d := v_omgezettelandcode;
n := SUBSTRING(d, 1, 9);
d := SUBSTRING(d, 10);
n := n/97;
WHILE d.LENGTH > 7 LOOP
n := n || SUBSTRING(d, 1, 7);
d := SUBSTRING(d, 8);
n := n/97;
END LOOP;
n := n || d;
if n/97 = 1
then return 'T';
else return 'F';
end if;
END checkIBAN;
Du musst angemeldet sein, um einen Kommentar abzugeben.
SUBSTRING ist nicht eine Funktion in Oracle - du suchst SUBSTR.
Einer Variablen wie
d
können nicht deklariert werden, als VARCHAR2 - es muss gegeben werden, eine Länge. Beachten Sie, dass dies unterscheidet sich von einem parameter, wie p_IBAN oder einer return-Wert-Erklärung - in beiden Fällen ist eine Länge nicht erforderlich ist (oder sogar erlaubt).@wweicker richtig darauf hin, dass Sie nicht WÄHLEN, in einem SUBSTR, und müssen stattdessen eine variable verwenden.
Wenn diese Fehler behoben sind ich denke, deine Funktion sollte so Aussehen:
Viel Glück.
Teilen und genießen.
SUBSTRING
vsSUBSTR
v_omgezettelandcode
aus konstituierenden teilen. BTW - es gibt eine variableletter
verwendet in diese routine, die nicht erklärt überall, dass die hier gesehen werden können. Ist das ein Fehler, oder..? Teilen und genießen.Müssen Sie
CREATE OR REPLACE FUNCTION
statt nurFUNCTION
ex.
Es ist ein anderer Fehler als gut. Wo haben Sie:
Verwenden Sie
INTO
müssen Sie eine variable. Sie können nicht geben Sie die eingebaute Funktion 'SUBSTRING' "select in"ex.
danke an Euch alle, irgendwann drehte ich Sie über al little bit, jetzt funktioniert es.
Andere potentielle Lösung für diejenigen mit DbVisualizer, (und vielleicht andere tools?). Dies ist, was dieses problem für mich.
Fügen Sie diese beiden Zeilen in deinem code, etwa so:
--/
(all your code)
/