Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Firebird+Roles+Rechte

  Alt 17. Aug 2006, 17:01
So,

das ganze unter IBExpert.
- DB registrieren
- dann bei Procedures Rechts-Klick New(Neu)
- auf der rechten Seite in der Toolbar "LazyMode aus"
(das ist links vom Compile, also dem Blitz)
- alles aus dem Editor rauslöschen
- jetzt gaaanz nach oben , ALLES raus
(der Cursor steht nicht in der 1. Zeile)
- Folgendes von Hand eintippen

Schlaue Leute Copy&Paste *fg*

SQL-Code:

Create Procedure SP_GETROLESONUSER (
    THEUSERNAME VarChar(31))
Returns (
    THEROLES VarChar(31))
As
Begin
  For Select
    rdb$user_privileges.rdb$relation_name as RoleName
  From
    rdb$user_privileges
  Where
   (rdb$user_privileges.rdb$user=:TheUserName) and
   (rdb$user_privileges.rdb$object_type=13) into :TheRoles do
  Begin
    Suspend;
  End
End
- Compile (der Blitz)
- die Meldung bestätigen
- F12 (Query-Editor)
select * from SP_GETROLESONUSER('KLU');
- F9

Ergebnis sind die Roles (auch mehrere).

Diese "selectable stored procedure" wird also wie eine Query benutzt,
die allerdings einen Parameter hat.


Kurze Erklärung:
- THEUSERNAME ist der Input-Parameter
es wird Groß-Buchstaben verlangt
sonst muesste man in der SP ein

  (rdb$user_privileges.rdb$user=:TheUserName) schreiben.

- THEROLES ist Ausgabeparameter

- Das "For Select Into" erzeugt einen Cursor

- das Suspend wartet solange, bis der Client den Datensatz abholt (fetch)



UND WOZU DAS ALLES ?

1.
Der Code kann von verschiedenen Programmen benutzt werden.

2.
Die gleiche SP, allerdings mit einem anderen Code intern,
kann man für mehrere Datenbanken (Oracle) schreiben



Heiko
PS:
Die SP hat nichts mit der Role-Zuweisung zu tun,
dafür gibt es GRANT.
Heiko
  Mit Zitat antworten Zitat