Zum Inhalt springen

PL/SQL Array an eine Unterprozedur übergeben


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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?

Geschrieben

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

Geschrieben
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

B) darf ich keine eigenen erstellen (:()

Gibts da wirklich keine andere Möglichkeit?

Gruß

Gany

Geschrieben
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 :)

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...