In unserem SVN-Repository-Code, stieß ich auf eine Package-Spezifikation, die ein paar Lines- Entfernen -nach läuft darauf hinaus,Ist das ein Fehler im PL/SQL Compiler?
untencreate or replace package tq84 as
return varchar2(10);
end tq84;
/
Es scheint mir, dass eine solche Spezifikation macht nicht viel Sinn und daher sollte überhaupt nicht kompiliert werden. Aber vielleicht, ich sehe das Offensichtliche nicht, also: Ist das wirklich ein Bug?
Für Vollständigkeit halber:
me @ xxx.yyy.zz > select * from v$version;
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
bearbeiten: Es wurde vorgeschlagen, dass, wie oben return
in der Beschreibung angegeben ist nicht das Schlüsselwort, sondern eine (Paket-) variabel. Dies scheint jedoch nicht der Fall zu sein, da die folgenden kompiliert ebenso fein:
create or replace package tq84 as
return varchar2(10);
return number;
return date;
end tq84;
/
und klar, der Compiler soll mir sagen, dass ich die gleiche Variable mehrfach erklären.
EDIT 2: JOTN ist natürlich recht, und return
IST eine Variable, und darüber hinaus die Compiler sagen nicht im Voraus, wenn eine Variable mit dem gleichen Namen zweimal deklariert wird oder mehr statt Es ist die Laufzeitumgebung, die das tut.
Also, in diesem Sinne ist es möglich, so etwas wie
create or replace package return as
subtype return is varchar2(10);
end return;
/
create or replace package tq84 as
constant constant
return . return := 'return';
function function
return return . return;
end tq84;
/
zu kompilieren, die zumindest auf den ersten Blick seltsam aussieht.
Also, ich denke, es ist nicht ein Compiler Fehler weilreturn
als Variablennamen erlaubt, aber dann ist es strittig, ob der Compiler mindestens eine Warnung ausgeben, wenn eine Variable mit dem gleichen Namen soll, ist, mehrfach erklärt.
Ich habe gerade hinzugefügt, wie Sie die Warnungen einschalten. – JOTN
Es ist kein Fehler ... es ist ein Feature;) – guigui42