AI翻訳通知
このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
ctx.sql
ctx.sql は SQL の実行と管理機能を提供します。主に RunJS(JSBlock やワークフローなど)でデータベースに直接アクセスするために使用されます。一時的な SQL 実行、保存済み SQL テンプレートの ID 指定実行、パラメータバインディング、テンプレート変数({{ctx.xxx}})、および結果タイプの制御をサポートしています。
適用シーン
注意:
ctx.sqlはflowSqlAPI を通じてデータベースにアクセスします。現在のユーザーが対象のデータソースに対して実行権限を持っていることを確認してください。
権限説明
一般ユーザー向けのフロントエンドロジックでは ctx.sql.runById(uid, options) を使用します。動的な SQL やテンプレート管理が必要な場合は、現在のロールに SQL 設定権限があることを確認してください。
型定義
常用メソッド
注意:
runは SQL のデバッグ用であり、設定権限が必要です。save、destroyは SQL テンプレートの管理用であり、設定権限が必要です。runByIdは一般ユーザーに開放されており、保存済みテンプレートの実行のみ可能です。SQL のデバッグや変更はできません。- SQL テンプレートに変更があった場合は、
saveを呼び出して保存する必要があります。
パラメータ説明
run / runById の options
save の options
SQL テンプレート変数とパラメータバインディング
テンプレート変数 {{ctx.xxx}}
SQL 内で {{ctx.xxx}} を使用してコンテキスト変数を参照できます。実行前に実際の値に解析されます。
参照可能な変数のソースは ctx.getVar() と同様です(例:ctx.user.*、ctx.record.*、カスタム ctx.defineProperty など)。
パラメータバインディング
- 命名パラメータ:SQL 内で
:nameを使用し、bindにオブジェクト{ name: value }を渡します。 - 位置パラメータ:SQL 内で
?を使用し、bindに配列[value1, value2]を渡します。
例
一時的な SQL の実行(SQL 設定権限が必要)
テンプレート変数の使用
テンプレートの保存と再利用
ページネーションリスト(SQLResource)
ctx.resource、ctx.request との関係
ctx.sql は flowSql API をラップしており、SQL シナリオに特化しています。ctx.request は任意の API を呼び出すことができます。
注意事項
- SQL インジェクションを避けるため、文字列結合ではなくパラメータバインディング(
:name/?)を使用してください。 type: 'selectVar'はスカラー値を返します。通常COUNTやSUMなどで使用します。- テンプレート変数
{{ctx.xxx}}は実行前に解析されます。コンテキスト内に対応する変数が定義されていることを確認してください。
関連情報
- ctx.resource:データリソース。SQLResource は内部で
flowSqlAPI を呼び出します。 - ctx.initResource():ページネーションリストなどのために SQLResource を初期化します。
- ctx.request():汎用 HTTP リクエスト。

