Stored procedures

Was sind Stored Procedures? Wie erstellt man Stored Procedures? Wie löscht man Stored Procedures? Wie ändert man Stored Procedures?

CREATE PROCEDURE - gespeicherte Prozedur erzeugen

Syntax

Beschreibung

    Mit CREATE PROCEDURE wird eine Prozedur (Programm/Funktion) in der Datenbank gespreichert, die später innnerhalb eines SQL-Statements oder eines Programms/Prozedur aufgerufen werden kann.

    Beispiel:

CREATE PROCEDURE table_drop ( )
 DROP TABLE proc_test;
 END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'table_drop' erstellt, die bei Aufruf die Tabelle 'proc_test' in der aktuellen Datenbank löscht.

DBA

    DBA teilt dem DBMS mit eine Prozedur mit DBA-Privilegien (Administrator-Rechten) zu erzeugen.

    Beispiel:

CREATE DBA PROCEDURE table_create ( )
 CREATE TABLE proc_test (
  fid  smallint,
  ag   smallint,
  vsnr integer
  );
END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'table_create' erstellt, die bei Aufruf in der aktuellen Datenbank eine Tabelle 'proc_test' mit drei Feldern 'fid', 'ag' und 'vsnr' erstellt.

Durch das Schlüsselwort DBA erhätl die Prozedur ...

REFERENCES { BYTE | TEXT }

    REFERENCES ...

    Beispiel:

under contsruction ...

Hier wird eine in der Datenbank gespeicherte Prozedur '...' erstellt.

DEFAULT { Wert | NULL }

    DEFAULT spezifiziert einen Vorgabewert, der Verwendet wird, denn keine Parameter übergeben werden.

    Beispiel:

CREATE PROCEDURE square ( par INTEGER DEFAULT 0 )
 RETURNING INTEGER;
 DEFINE rez INTEGER;
 LET rez = par * par;
 RETURN rez;
END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'square' erstellt, bei der der einzige Aufrufparameter 'par' optional ist und per Voreinstellung gleich Null ist. Wenn die Prozedur ohne Parameter aufgerufen wird, liefert sie 0*0 zurück, wenn mit Parameter, dann par*par.

RETURNING { Feldtyp | REFERENCES { BYTE | TEXT } }

    RETURNING teilt dem DBMS mit, wie viele Werte vom welchen Typ die Prozedur zurückgibt.

    Beispiel:

CREATE PROCEDURE aam_table_insert ( )
 RETURNING INT;
 DEFINE i INT;
 INSERT INTO aam_proc_test ( fid, ag, vsnr )
 VALUES ( 1, 2, 3 );
 INSERT INTO aam_proc_test ( fid, ag, vsnr )
 VALUES ( 0, 9, 9 );
 LET i = SELECT COUNT(*) FROM proc_test;
 RETURN i;
END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'table_insert' erstellt, die zwei neue Datensätze in die Tabelle 'proc_test' einfügt.

Statement

    Ein SPL-Statement bzw. Befehl, z.B. DEFINE, RETURN, IF, FOR, FOREACH, WHILE, usw.

    Beispiel:

CREATE PROCEDURE table_run ( )
 DEFINE i INT;
 SET ISOLATION TO dirty read;
 SET LOCK MODE to wait 60;
 SET PDQPRIORITY 5;
 CALL table_drop();
 CALL table_create();
 LET i = table_insert();
END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'table_run' erstellt, die einige andere Prozeduren aufruft und ein Rückgabewert verarbeitet.

Umfassendes Beispiel

    Beispiel:

CREATE PROCEDURE table_show ( )
 RETURNING INT, INT, INT;
 DEFINE my_fid, my_ag, my_vsnr INTEGER;
 CALL table_run();
 FOREACH
  SELECT square(fid+1) fid, ag, vsnr
  INTO my_fid, my_ag, my_vsnr
  FROM proc_test
  RETURN my_fid, my_ag, my_vsnr
  WITH RESUME;
 END FOREACH;
END PROCEDURE;

Hier wird eine in der Datenbank gespeicherte Prozedur 'table_show' erstellt, die alle Datensätze der Tabelle proc_test zurückgibt, die Sie vorher dort mit der Unterprozedur 'table_run' eingefügt hat.

DROP PROCEDURE - gespeicherte Prozedur löschen

Syntax

Beschreibung:

    DROP PROCEDURE löscht eine gespeicherte Prozedur aus der Datenbank.

    Beispiel:

DROP PROCEDURE table_show;

Hier wird die gespeicherte Prozedur 'table_show' gelöscht.

EXECUTE PROCEDURE - gespeicherte Prozedur ausführen

Syntax

Beschreibung:

    EXECUTE PROCEDURE führt eine in der Datenbank gespeicherte Prozedur aus.

    Beispiel:

EXECUTE PROCEDURE table_show;

Hier wird die gespeicherte Prozedur 'table_show' gestartet.

GRANT - Prozedurrechte vergeben

Syntax

    GRANT { EXECUTE | ALL }
    ON Prozedurname
    TO
    { User | {GROUP|ROLE} groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ];

Beschreibung

    Mit GRANT können Sie den spezifizierten Usern bzw. Benutzergruppen (Rollen)
    folgende Berechtigungen auf Prozeduren geben:
    EXCEUTE - Prozedur starten, ausführen bzw. aufrufen
    ALL - alle Rechte geben

    Wenn anstatt konkreter user und benutzergruppen PUBLIC angegeben wird, werden die Rechte allen Usern gegeben (Je nach RDMBS ggf. nur für die aktuelle Datenbank).

    WITH GRANT OPTION erlaubt es den Usern die neu erworbenen Tabellenrechte an weitere User weiterzugeben.

    Beispiel:

GRANT EXECUTE ON random_number TO my_user;

Hier wird der User my_user berechtigt die Prozedur random_number zu verwenden.

REVOKE - Prozedurrechte entfernen

Syntax

Beschreibung

    Mit REVOKE können Sie den spezifizierten Usern bzw. Benutzergruppen (Rollen)
    Berechtigungen auf Prozeduren wieder wegnehmen:
    EXCEUTE - Prozedur starten, ausführen bzw. aufrufen
    ALL - alle Rechte entfernen

    Wenn anstatt konkreter user und benutzergruppen PUBLIC angegeben wird, werden die Rechte aller User entfernt (Je nach RDMBS ggf. nur für die aktuelle Datenbank).

    Beispiel:

REVOKE EXECUTE ON random_number FROM my_user;

Hier wird dem User my_user das Recht entzogen, die Prozedur random_number zu verwenden.