Aufrufabhängige SQL Platzhalter

Die Argumente werden im Aufrufkontext der Anwendung übergeben. Innerhalb von Abfragen aller Datenquellen die auf einer Datenbank basieren können Platzhalter verwendet werden. Diese sind unten aufgeführt.

Bei den Platzhaltern wird zwischen Groß/Klein-schreibung unterschieden.

Die Ersetzung erfolgt immer als Zeichenkettenoperation, d.H. es werden keine Parameter dafür definiert.

  • $userName$: Der Login-Name des Aufrufers. Beim Ersetzungsvorgang wird der Wert in einfache Quoten eingeschlossen. Sonderzeichen werden gemäß der Regeln der verwendeten Datenbank maskiert.

    Hinweis: Wenn Sie den Namen in einem Like verwenden wollen, schreiben Sie .... where name_spalte like '%' || $userName$ || '%' ... (hier im Bsp. PostgreSQL)

  • $groupNamesAsOneString$: Alle Gruppennamen, in denen der aufrufende Benutzer Mitglied ist. Beim Ersetzungsvorgang werden alle Namen als kommagetrennte Liste zusammengeführt und in einfachen Quoten als eine Zeichenfolge eingesetzt. Sonderzeichen werden gemäß der Regeln der verwendeten Datenbank maskiert.

  • $groupNamesForIn$: Alle Gruppennamen, in denen der aufrufende Benutzer Mitglied ist. Beim Ersetzungsvorgang werden die Einzelwerte in einfachen Quoten eingeschlossen und als kommagetrennte Liste eingesetzt. Sonderzeichen werden gemäß der Regeln der verwendeten Datenbank maskiert.

Gruppennamen sollten kein Komma enthalten, dies kann zu Fehlern bei der Auswertung führen, da es sich hierbei um ein Trennzeichen handelt.

Die Objektnamen werden wie übergeben eingesetzt, d.h. außer der Maskierung erfolgen keine weiteren Änderungen.

Von cardo aus werden immer alle Objektnamen in GROßSCHREIBUNG übergeben.

Beispiel

Der Aufruf erfolgt mit dem Benutzer "DOM\Samp'le", dieser ist Mitglied in den Gruppen "DOM\Jeder" und "DOM\Wichtig".

Abfrage:

SELECT 
  *
FROM 
 tab 
WHERE 
    G IN($groupNamesForIn$)
OR  U = $userName$
OR  Func($groupNamesAsOneString$) > 0
</code>

wird zu ...

SELECT 
  * 
FROM 
 tab 
WHERE 
    G IN('DOM\Jeder','DOM\Wichtig')
OR  U = 'DOM\Samp''le'
OR  Func('DOM\Jeder,DOM\Wichtig') > 0

Zuletzt geändert: 13.03.2024 12:40:13 (erstmals erstellt 19.04.2017)