Ganymed Geschrieben 28. Oktober 2004 Geschrieben 28. Oktober 2004 Hallo zusammen, ich habe mir ein Array (Oder wie man das auch immer nennt in PL/SQL) wiefolgt deklariert: TYPE meinArray IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; varMeinArray meinArray; -- Also hier ist die Deklaration einer Variablen Im laufe meine Codes wird das Array mit Werten befüllt (Menge ist nicht fest definiert). Dieses Array möchte ich nun zur Weiterverarbeitung an eine Unterprozedur übergeben. Also etwa so: meine_Prozedur(varMeinArray); Und die Prozedur hat folgenden Kopf: CREATE OR REPLACE PROCEDURE meine_Prozedur( meinArray in NUMBER) is [...] Wenn ich nun Compiliere bekomme ich die Fehlermeldung, dass die Anzahl der übergebenen Argumente nicht stimmt. Frage: wie an welcher Stelle übergebe ich das Array korrekt an meine Prozedur? Gruß Gany
Pinhead Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Und die Prozedur hat folgenden Kopf: CREATE OR REPLACE PROCEDURE meine_Prozedur( meinArray in NUMBER) is Gruß Gany Hi, also ich bin mir nicht ganz sicher aber müßte da nicht in ungefähr so etws stehen CREATE OR REPLACE PROCEDURE meine_Prozedur(pMeinArray in meinArray) is Du willst ja keine Number übergeben sondern dein Array
Ganymed Geschrieben 29. Oktober 2004 Autor Geschrieben 29. Oktober 2004 Hi, also ich bin mir nicht ganz sicher aber müßte da nicht in ungefähr so etws stehen CREATE OR REPLACE PROCEDURE meine_Prozedur(pMeinArray in meinArray) is Du willst ja keine Number übergeben sondern dein Array Er sagt, dass der Typ von meinArray in der Prozedur deklariert werden muss :confused: Wie mach ich das denn schon wieder?
AxlHammer Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Hallo zusammen. Ich glaube in Deinem Fall würde ich den Parameter gar nicht übergeben, sondern als globale Variable in Deinem Package deklarieren. Ansonsten müsstest du zumindest die Type-Deklarierung global in dem Package machen, hier bin ich mir aber nicht so sicher... Es kommt auch darauf an, von wo du die Prozedur aufrufen willst: Innerhalb des Packages oder außerhalb... Gruss, Axl
Ganymed Geschrieben 29. Oktober 2004 Autor Geschrieben 29. Oktober 2004 Hallo zusammen. Ich glaube in Deinem Fall würde ich den Parameter gar nicht übergeben, sondern als globale Variable in Deinem Package deklarieren. Ansonsten müsstest du zumindest die Type-Deklarierung global in dem Package machen, hier bin ich mir aber nicht so sicher... Es kommt auch darauf an, von wo du die Prozedur aufrufen willst: Innerhalb des Packages oder außerhalb... Gruss, Axl Package? Davon weiß ich a) nichts darf ich keine eigenen erstellen () Gibts da wirklich keine andere Möglichkeit? Gruß Gany
Pinhead Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 As Parameters You can declare PL/SQL tables as the formal parameters of functions and procedures. That way, you can pass PL/SQL tables to stored subprograms and from one subprogram to another. In the following example, you declare PL/SQL tables as the formal parameters of two packaged procedures: PACKAGE emp_actions IS TYPE EnameTabTyp IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; TYPE SalTabTyp IS TABLE OF emp.sal%TYPE INDEX BY BINARY_INTEGER; ... PROCEDURE hire_batch (ename_tab IN EnameTabTyp, sal_tab IN SalTabTyp, ...); PROCEDURE log_names (ename_tab IN EnameTabTyp); END emp_actions; To define the behavior of formal parameters, you use parameter modes. The OUT and IN OUT modes let you return values to the caller of a subprogram when you exit. If you exit successfully, PL/SQL assigns values to the actual parameters. However, if you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters. Quelle Jetzt besteht nur noch ein Problem. Wo wird der Typ erstellt wenn nicht in einem Päckchen ? Ich forsche weiter
AxlHammer Geschrieben 29. Oktober 2004 Geschrieben 29. Oktober 2004 Probier es mal mit CREATE OR REPLACE TYPE <typname> AS TABLE OF <datentyp> evtl. muss der Zusatz "INDEX BY BINARY_INTEGER" noch dazu. Hab das ganze aber noch nicht überprüft und weiss nicht, ab welcher ORACLE-Version das geht / gehen sollte ... Gruss, Axl
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden