Announcement

Collapse
No announcement yet.

Interbase 5 - Stored Procedure

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Interbase 5 - Stored Procedure

    Hallo,

    ich steuere den Datenzugriff über eingerichtete Views, die
    in Abhängigkeit von den Berechtigungen unterschiedliche
    Gruppennamen haben.

    Wie kann ich in einer Stored Procedure, die eine Select-Abfrage
    durchführt, die View in der FROM - Klausel variabel übergeben.
    Entgegen der variablen Übergabe von anderen Parametern erhalte ich hier
    Fehlermeldungen.

    Vielen Dank für Euere Hilfe
    Volker

  • #2
    Hallo,

    wenn der Tabellen- oder View-Name zur Zeit des Speicherns der <b>Stored Procedure</b> nicht bekannt ist, könnte der InterBase-Optimizer nicht den schnellsten Zugriffsweg suchen, und auch die Prüfung, ob es diese Tabelle/View überhaupt gibt und ob Rechte darauf eingerichtet wurden, wäre nicht möglich. Ich würde daher innerhalb der Stored Procedure auf die verschiedenen VIEWs verzweigen. Beispiel:
    <pre>
    CREATE PROCEDURE VARVIEW (
    AVIEW CHAR(6)
    ) RETURNS (
    GNR VARCHAR(10),
    NAME VARCHAR(40),
    NAME2 VARCHAR(40),
    ORT VARCHAR(30)
    ) AS BEGIN
    IF (AVIEW = 'V_GI_A') THEN
    BEGIN
    FOR
    SELECT * FROM V_GI_A
    INTO :GNR, :Name, :Name2, :Ort
    DO
    SUSPEND;
    END
    ELSE
    BEGIN
    FOR
    SELECT * FROM V_GI_B
    INTO :GNR, :Name, :Name2, :Ort
    DO
    SUSPEND;
    END
    END
    </pre>
    Beim Aufruf über <i>SELECT * FROM VARVIEW('V_GI_B');</i> würde dann der zu verwendende View-Name übergeben. Oder (was noch einfacher ist), der Benutzername wird gleich innerhalb der Stored Procedure in der IF-Verzweigung ausgewertet

    Comment


    • #3
      Hallo,

      wenn der Aufwand "nur" getrieben wird um Benutzerechte zu überwachen, kann auf durch einen Zugriff auf die Tabelle RDB$USER_PRIVILIGES geprüft werden, ob der user das darf. Falls ja wird weitergemacht ansonsten die ausführung der Procedure mit Exception abgebrochen.

      Fände ich flexibler und elegante

      Comment

      Working...
      X