Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.
ctx.sql bietet Funktionen zur Ausführung und Verwaltung von SQL, die häufig in RunJS (wie JSBlock, Ereignis-Workflows) verwendet werden, um direkt auf die Datenbank zuzugreifen. Es unterstützt die temporäre SQL-Ausführung, die Ausführung gespeicherter SQL-Vorlagen nach ID, Parameterbindung, Vorlagenvariablen ({{ctx.xxx}}) sowie die Steuerung des Ergebnistyps.
| Szenario | Beschreibung |
|---|---|
| JSBlock | Benutzerdefinierte Statistikberichte, komplexe Filterlisten und tabellenübergreifende Aggregationsabfragen. |
| Diagramm-Block | Speichern von SQL-Vorlagen zur Steuerung von Diagramm-Datenquellen. |
| Workflow / Verknüpfung | Ausführen von vordefiniertem SQL zum Abrufen von Daten für die nachfolgende Logik. |
| SQLResource | Verwendung in Kombination mit ctx.initResource('SQLResource') für Szenarien wie paginierte Listen. |
Hinweis:
ctx.sqlgreift über dieflowSql-API auf die Datenbank zu. Stellen Sie sicher, dass der aktuelle Benutzer über die entsprechenden Ausführungsberechtigungen für die Datenquelle verfügt.
| Berechtigung | Methode | Beschreibung |
|---|---|---|
| Angemeldeter Benutzer | runById | Ausführung basierend auf einer konfigurierten SQL-Vorlagen-ID. |
| SQL-Konfigurationsberechtigung | run, save, destroy | Temporäres SQL ausführen oder SQL-Vorlagen speichern, aktualisieren oder löschen. |
Die Frontend-Logik für reguläre Benutzer sollte ctx.sql.runById(uid, options) verwenden. Wenn dynamisches SQL oder die Verwaltung von Vorlagen erforderlich ist, stellen Sie sicher, dass die aktuelle Rolle über SQL-Konfigurationsberechtigungen verfügt.
| Methode | Beschreibung | Berechtigungsanforderung |
|---|---|---|
ctx.sql.run(sql, options?) | Führt temporäres SQL aus; unterstützt Parameterbindung und Vorlagenvariablen. | SQL-Konfigurationsberechtigung |
ctx.sql.save({ uid, sql, dataSourceKey? }) | Speichert oder aktualisiert eine SQL-Vorlage nach ID zur Wiederverwendung. | SQL-Konfigurationsberechtigung |
ctx.sql.runById(uid, options?) | Führt eine zuvor gespeicherte SQL-Vorlage anhand ihrer ID aus. | Jeder angemeldete Benutzer |
ctx.sql.destroy(uid) | Löscht eine angegebene SQL-Vorlage nach ID. | SQL-Konfigurationsberechtigung |
Hinweis:
run wird zum Debuggen von SQL verwendet und erfordert Konfigurationsberechtigungen.save und destroy werden zur Verwaltung von SQL-Vorlagen verwendet und erfordern Konfigurationsberechtigungen.runById ist für reguläre Benutzer offen; es kann nur gespeicherte Vorlagen ausführen und das SQL weder debuggen noch ändern.save aufgerufen werden, um die Änderungen zu speichern.| Parameter | Typ | Beschreibung |
|---|---|---|
bind | Record<string, any> | any[] | Bindungsvariablen. Objektform für :name-Platzhalter, Array-Form für ?-Platzhalter. |
type | 'selectRows' | 'selectRow' | 'selectVar' | Ergebnistyp: Mehrere Zeilen, einzelne Zeile oder Einzelwert. Standard ist selectRows. |
dataSourceKey | string | Kennung der Datenquelle. Standardmäßig wird die Hauptdatenquelle verwendet. |
filter | Record<string, any> | Zusätzliche Filterbedingungen (je nach Schnittstellenunterstützung). |
| Parameter | Typ | Beschreibung |
|---|---|---|
uid | string | Eindeutige Kennung für die Vorlage. Nach dem Speichern kann sie über runById(uid, ...) ausgeführt werden. |
sql | string | SQL-Inhalt. Unterstützt {{ctx.xxx}}-Vorlagenvariablen und :name / ?-Platzhalter. |
dataSourceKey | string | Optional. Kennung der Datenquelle. |
{{ctx.xxx}}Sie können {{ctx.xxx}} in SQL verwenden, um auf Kontextvariablen zu verweisen. Diese werden vor der Ausführung in tatsächliche Werte aufgelöst:
Die Quellen für referenzierbare Variablen sind dieselben wie bei ctx.getVar() (z. B. ctx.user.*, ctx.record.*, benutzerdefinierte ctx.defineProperty usw.).
:name im SQL und übergeben Sie ein Objekt { name: value } in bind.? im SQL und übergeben Sie ein Array [value1, value2] in bind.| Zweck | Empfohlene Verwendung |
|---|---|
| SQL-Abfrage ausführen | ctx.sql.run() oder ctx.sql.runById() |
| SQL-paginierte Liste (Block) | ctx.initResource('SQLResource') + ctx.resource.refresh() |
| Allgemeine HTTP-Anfrage | ctx.request() |
ctx.sql kapselt die flowSql-API und ist auf SQL-Szenarien spezialisiert; ctx.request kann verwendet werden, um jede beliebige API aufzurufen.
:name / ?) anstelle von String-Verkettung, um SQL-Injection zu vermeiden.type: 'selectVar' gibt einen skalaren Wert zurück, der normalerweise für COUNT, SUM usw. verwendet wird.{{ctx.xxx}} werden vor der Ausführung aufgelöst; stellen Sie sicher, dass die entsprechenden Variablen im Kontext definiert sind.flowSql-API auf.