Hallo
Ich möchte in einer Stored procedure Arrays nutzen, hab aber keine Ahnung wie man die definiert usw. Gibt es irgendwo im Web eine Anleitung dazu?
Ich verwende Oracle 8i und PL/SQL.
Danke
Gruss
Marc
Hallo
Ich möchte in einer Stored procedure Arrays nutzen, hab aber keine Ahnung wie man die definiert usw. Gibt es irgendwo im Web eine Anleitung dazu?
Ich verwende Oracle 8i und PL/SQL.
Danke
Gruss
Marc
Hallo
Ich möchte in einer Stored procedure Arrays nutzen, hab aber
keine Ahnung wie man die definiert usw. Gibt es irgendwo im
Web eine Anleitung dazu?Ich verwende Oracle 8i und PL/SQL.
Hi,
Arrays unterstützt Oracle nicht direkt. Es gibt Collection Types, das sind Datenstrukturen, die sich ähnlich verhalten: index-by tables, nested tables und Varrays.
Ich persönlich würde Dir eine PL/SQL-Tabelle (index-by table) empfehlen: sie verhält sich ähnlich wie ein Array, bloß muß der Index nicht unbedingt gefüllt werden, sondern kann Lücken aufweisen: z. B. könnte man eine Tabelle Text so belegen:
Text(1)= ‚Blabla‘
Text(500)= ‚Kuckuck‘
Die Tabelle enthält nur zwei Einträge, aber der Index ist nicht durchgehend.
Anleitungen dazu gibt es viele. Versuch mal erstens die Oracle Doku (sie ist doch nicht so schlecht in dem Punkt), dann z.B. hier: http://www.tek-tips.com/gfaqs.cfm/lev2/4/lev3/27/spi…
Gruß
J.
hi!
und dann gibt’s da noch die etwas derbe variante mit „temporären“ tabellen (von dieser würde ich jedoch absolut abraten): einfach eine tabelle kreieren, die deinem record entspricht … nur mußt sie halt zur sicherheit vorher und im normalfall nach der verarbeitung leeren … dann mußt noch aufpassen, ob das ganze online (dann brauchst unbedingt die session-id o.ä.) oder im batch (hier ist es egal) abläuft und noch einige sachen, die sich jedoch erst im laufe des betriebs zeigen … es ist eine möglichkeit, jedoch würde ich davon eher abraten und jose harvey’s variante bevorzugen, falls arrays unausweichlich sind (hab’s bis jetzt immer ohne geschafft)
grüße,
tomh
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]