wo zu definieren Standardwert in oracle-Paket
beim definieren eines Pakets in oracle-es ist wie ein header und dann einen Körper.
Muss man definieren aller Parameter in beiden Orten. Ich möchte ein Parameter optional ist für das aufrufende Programm (IBM message broker). Muss ich hinzufügen, das default-Wert in den Kopf und Körper definition?
Des weiteren kann das jemand bestätigen, dass messagebroker wird in der Lage sein zu nennen, der proc mit aus der Angabe den Wert für den parameter mit einem default?
Dank!
Update: ich merke, dass ich hinzufügen kann, den Standard in den Kopf und nicht den Körper, oder kann ich es hinzufügen, in beiden. Ich kann nicht fügen Sie es einfach in den Körper.
Was ist der Unterschied zwischen dem hinzufügen zu beiden vs-nur der header?
Update:
Kann ich dies tun, wo ich nur angeben, das standardmäßig in der Skillung und nicht der Körper. Oder kann ich auch angeben, die standardmäßig in beiden Orten. Was ist der Unterschied?
create or replace
package myPackage is
PROCEDURE myProc (
parm1 IN varchar2,
parm1 IN date,
parm1 IN number default null
);
end myPackage;
create or replace
package body myPackage is
PROCEDURE myProc (
parm1 IN varchar2,
parm1 IN date,
parm1 IN number
) is
...
...
...
end myProc;
end myPackage;
ahhh, da hast du Recht... ich war wohl Wunschdenken 🙂
InformationsquelleAutor kralco626 | 2011-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um einen optionalen parameter festgelegt hat, dann müssen Sie einen Standardwert. Ich wäre überrascht, wenn der default-Wert funktioniert, wenn es nicht in der Erklärung des Körpers.
Habe ich bekommen in die Gewohnheit, alle meine package spec Erklärungen exakte Kopien des Pakets Körper Deklarationen, um Probleme zu vermeiden.
EDIT:
Als OP weist darauf hin, es kann in der spec nur, und es funktioniert. Wenn es in den Körper, aber nicht der Spezifikation, wird eine Fehlermeldung angezeigt:
Aber wenn in der spec nur, alle Werke:
Sagte, die Antwort auf die Frage, was das für einen Unterschied es, es scheint, dass es keinen Unterschied zwischen Umsetzung der Vorgabe in der Spezifikation nur-oder an beiden Orten - das Ergebnis ist das gleiche. Ich möchte wiederholen, meine Meinung ist, dass Sie sollten Sie in beiden Orten, die für dokumentarische Zwecke.
Offenbar, Sie MÜSSEN in der Spezifikation, können aber optional in den Körper.
genau. meine Frage ist, macht es einen Unterschied?
es nicht einen Unterschied machen; aber denken Sie über das Debuggen dieses Codes und die Menschen in der Zukunft kommen, um es zu betrachten. Es macht das Leben einfacher, wenn es offensichtlich ist, was Los ist, und die Standardwerte werden in der Spezifikation und den Körper.
kann eine Funktion nicht deklariert ist in der Spezifikation ein Standard-Wert in dem Paket Körper?
InformationsquelleAutor DCookie
In der Paket, Sie können Standard-Variablen /Konstanten, die entweder an der Skillung oder den Körper. Ich persönlich lege Sie in den Körper, da ich nicht wirklich ein Blick auf die spec, um herauszufinden, was Los ist; ich kenne die offizielle Oracle nicht einverstanden mit mir. In den Körper-dies sollte gerade unter den
create or replace
Ich bin ein wenig verwirrt durch Ihre Nutzung der word-parameter, obwohl die bedeutet, dass Sie vorbei sind dies Funktionen /Prozeduren in Ihrem Paket. Wenn Sie eine Globale variable in einem Paket spec oder Körper, es gibt überhaupt keine Notwendigkeit, Sie zu passieren überall. Wenn Sie sich verändern, eine Globale bist du dann bitte für einen ganzen Haufen von Chaos oder wird sein gifting ein, wer folgt Ihnen in einem Jahre Zeit.
Wenn Sie es nur für eine Funktion /Prozedur wird dann in der Erklärung zu diesem bestimmten element.
Diese sollte helfen.
Vielleicht ist mein update helfen, zu klären
Ah, in diesem Fall @DCookie richtig ist; auf jeden Fall stellen es in beiden, sparen Sie sich eine Menge ärger.
InformationsquelleAutor Ben