跳至主要内容

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 位址存取。