Zum Inhalt springen

PL/SQL Array an eine Unterprozedur übergeben


Ganymed

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...