und damit der Luckie auch mal einen kleinen, abstrakten Bleistift zu Gesicht bekommt.
SQL-Code:
create procedure SomeProcedure(aSomeValue in integer) is
/* eine Konstante */
Tab constant char(1) := Chr(9);
/* Ein cursor, der einen Parameter nimmt und mit diesem Daten abfragt */
cursor SelectSomething(iParameter in integer) is
SELECT *
FROM XYZ
WHERE SomeColumn = iParameter;
/* ein Collection typ, bei der ein Element dem Typen einer Zeile des Cursors (und damit der Abfrage) entspricht */
type TSomeCollection is table of SelectSomething%RowType;
/* eine Variable dieser collection */
SomeCollection TSomeCollection;
/* ein Record mit Defninition siehe Collection ELement */
SomeRecord SelectSomething%RowType;
begin
/* cursor öffnen und Abfrage vorbereiten */
open SelectSomething(aSomeValue);
/* Inhalt der Abfrage in die Collection schieben */
fetch SelectSomething
bulk collect
into SomeCollection;
/* Abfrage schließen */
close SelectSomething;
/* durch die Ergebnisse laufen (wenn es Datensätze gibt)*/
if SomeCollection.Count > 0 then
for i in SomeCollection.First .. SomeCollection.Last loop
/* aktuelles Element in den Record kopieren */
SomeRecord := SomeCollection(i);
/* in die Kommandozeile ausgeben */
DBMS_Output.Put_Line((i + 1) || Tab || SomeRecord.Column1 || Tab || SomeRecord.Column2);
end loop;
end if;
end;
Das Ganze war jetzt PL/
SQL. Meiner Meinung nach sieht es aus wie ein Kreuzung zwischen C, Pascal und
SQL.
Jede
DB bringt ihre eigene Sprache mit. (MS
SQL Server: T-
SQL, InterBase/FireBird: PSQL,
mySQL: nix
) Und alle sind komplett anders.
Edit: Tippfähler...