11 Stimmen

Tabellenvariablen in Oracle PL/SQL?

Ich habe kürzlich eine neue Stelle als Entwickler angetreten und habe ein paar Probleme mit PL/SQL. Ich benutze MS SQL schon seit einigen Jahren, aber PL/SQL ist für mich etwas schwieriger.

Beim Schreiben von Funktionen und gespeicherten Prozeduren in MS SQL habe ich immer wiederkehrende Ergebnissätze in einer Tabellenvariablen abgelegt, damit ich sie nicht während der gesamten Prozedur erneut abfragen muss.

Etwa so:

declare @badPeople table(recordPointer int)
insert into @badPeople
select BP_Record_Pointer
from People
where BP_Bad = 1

Ich bin dabei, etwas Ähnliches in PL/SQL zu tun, aber ich bin nicht ganz sicher, wie ich anfangen soll. Irgendwelche Ideen, ob dies überhaupt möglich ist?

15voto

Allan Punkte 16706
declare
  type t_number is table of number;
  v_numbers t_number;
begin
  select BP_Record_Pointer
    bulk collect into v_numbers
    from People
    where BP_Bad = 1;
end;

Dadurch wird eine verschachtelte Tabelle erstellt, die die Werte aus Ihrer Tabelle enthält. Es ist wichtig zu beachten, dass die Tabelle am Ende des anonymen Blocks nicht mehr in den Anwendungsbereich fällt, so dass alles, was Sie damit tun wollen, innerhalb dieses Blocks geschehen muss.

6voto

Kuberchaun Punkte 27481

In Oracle werden Cursors im Gegensatz zu MS SQL nicht als Teufel betrachtet, den es zu vermeiden gilt. Daher werden Sie in Oracle in der Regel viel häufiger von Cursorn Gebrauch machen als in MS SQL. Natürlich ist es am besten, wenn Sie es nur mit SQL und ohne Cursor machen können, aber scheuen Sie sich nicht, Cursor in Oracle zu testen und zu verwenden. Besorgen Sie sich ein gutes Buch über PL/SQL, z. B. dieses http://www.amazon.com/Oracle-PL-SQL-Programming-4th/dp/0596009771 . Der Beitrag von Gratzy ist eine weitere Möglichkeit, die du nutzen kannst. Besorgen Sie sich also ein gutes Buch, mit dem Sie herausfinden können, wann Sie was verwenden sollten. PL/SQL ist eine sehr reichhaltige Umgebung im Vergleich zu T-SQL. Es ist zwar etwas gewöhnungsbedürftig, aber wenn man die Anfangskurve überwunden hat, ist es eine wirklich einfache und leistungsfähige Sprache. Und obendrein macht sie eine Menge Spaß.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X