跳至主要内容

SQL

SQL 是用於執行 SQL 查詢並從資料庫取得資料的 processor。

基本用法

執行 SQL 時,會使用設定的資料來源連接資料庫,執行 SQL 語句並將結果以陣列形式儲存到指定的變數中供後續 processor 使用。適用於資料查詢、條件篩選、統計分析、使用者驗證等需要存取資料庫資料的場景。

配置參數

Name

顯示在畫布上的名稱,用於在工作流程中識別此 processor。

Description

用於補充此 processor 的用途,提升工作流程的可讀性。

Properties

Data Source(必填)

選擇要連接的資料庫,需要先建立 Data Connector 資源。支援 PostgreSQL、MySQL、SQL Server 等資料庫類型。

SQL(必填)

要執行的 SQL 查詢語句,支援使用 $1, $2 等參數佔位符進行參數化查詢。

ResultField(必填)

查詢結果要儲存的變數名稱,查詢結果會以陣列形式儲存到此變數中,預設值為 result

SQL Type Arguments

提供給 SQL 查詢的參數值,對應 SQL 語句中的參數佔位符($1, $2, $3 等)。每個參數需要設定:

  • Type:參數的資料類型,支援 string、integer、number、boolean
  • Value:參數的實際值,可使用 Literal、Expression、Template 等設定方式,詳細說明請參考:Expression 介紹 - 取值方式

連接關係

Success

當成功執行 SQL 查詢並取得結果時,工作流程會從此連接點繼續執行。查詢結果會以陣列形式儲存到 ResultField 指定的變數名稱中,該變數可供後續 processor 使用。

Failure

當 SQL 查詢執行失敗時,工作流程會從此連接點繼續執行,並產生 prevError 變數儲存錯誤資訊。

使用範例

簡單資料查詢


從資料庫查詢使用者資料並顯示結果。在 SQL processor 中設定查詢語句(例如:SELECT id, name, email FROM users LIMIT 10),查詢結果會儲存到 resultField 變數中,然後透過 Push Message 將結果呈現給使用者。

參數化查詢


根據使用者輸入的條件查詢商品資料。Listen Message 接收使用者的查詢條件,SQL processor 使用參數化查詢語句(例如:SELECT * FROM products WHERE category = $1 AND price > $2)來安全地執行查詢並避免 SQL 注入攻擊,最後透過 Push Message 將商品清單呈現給使用者。

動態參數查詢


使用動態參數進行資料查詢。Listen Message 接收使用者輸入的 ID,SQL processor 透過 SQL Type Arguments 的 Expression 功能(例如:prevMessage)動態取得查詢參數來查詢對應的 FAQ 資料,然後由 Router 判斷查詢結果是否存在以決定後續處理流程。

查詢結果處理


處理和格式化查詢結果。SQL processor 執行查詢並將結果儲存到變數中,Push Message 透過 Expression 功能(例如:JSON.stringify(faqs))將查詢結果格式化後呈現給使用者,確保資料以易讀的方式顯示。

條件式查詢


根據查詢結果的存在與否來決定後續處理流程。Update Context 設定查詢條件,SQL processor 執行查詢,然後 Router 使用條件判斷(例如:faqs && faqs.length > 0)來檢查是否有查詢結果,並根據結果將工作流程導向不同的分支進行相應的處理。

注意事項

  1. 確保資料來源設定正確,包含主機、連接埠、帳號密碼等。

  2. 建議使用參數化查詢避免 SQL 注入攻擊。

  3. 大量資料查詢可能影響效能,適當使用 LIMIT 限制結果數量。

  4. 建議連接 Failure 分支,處理資料庫連線或查詢錯誤。

  5. 如果資料庫有 VPN 限制,需要設定允許 Asgard 平台的 IP 位址存取。