SQL 腳本

適用於:已勾選為是 Databricks SQL 已勾選為是 Databricks Runtime 16.3 和以上版本

您可以使用 SQL/PSM 標準型腳本語法來運用功能強大的程式邏輯。 任何 SQL 腳本都由 複合語句 區塊(BEGIN ... END)組成且開始於。 複合語句一開始會有一個區段來宣告本地變數、游標、使用者自訂條件和條件處理程序,這些用於捕捉例外。 後面接著複合語句主體,其中包含:

  • 流程控制語句包括對述詞表達式的迴圈、針對查詢結果 FOR 迴圈、條件式邏輯,例如 IFCASE,以及分流迴圈的方法,例如 LEAVEITERATE
  • 游標處理時可使用 OPEN、FETCHCLOSE 語句(Databricks Runtime 18.1 及以上版本)。
  • DDL 語句,例如 ALTERCREATEDROP
  • DCL (資料控制) 語句,例如 GRANTREVOKE
  • DML 語句 INSERTUPDATEDELETEMERGE
  • 查詢,將結果集傳回至腳本的叫用者。
  • SET 語句可以用來設定局部變數和會話變數。
  • EXECUTE IMMEDIATE 敘述。
  • 巢狀複合語句,提供變數、游標、條件及條件處理器的巢狀作用域。

在叫用者與複合語句之間傳遞數據

有兩種方式可將數據傳入 SQL 腳本,以及從中傳遞數據:

  • 使用會話變數在一個SQL腳本與另一個SQL腳本之間傳遞純量值或小型陣列或映射集合。
  • 使用參數標記,將純量值或小型陣列集或映射數據從筆記本元件、Python 或其他語言傳遞至 SQL 腳本。

變數與游標範圍

複合語句內宣告的變數可以在複合語句內的任何表達式中參考。 Databricks 會依照 名稱解析中所述的規則,從最內層的範圍向外解析標識符。 您可以使用選擇性複合語句 標籤 來釐清重複 變數名稱

在複合語句中宣告的游標可以被引用在 OPENFETCH,以及 CLOSE 該複合語句中的語句。 像變數一樣,你可以使用可選的複合語句標籤來消除巢狀作用域中重複的游標名稱。

條件處理

SQL 腳本支援條件處理程序,用於攔截並處理複合語句或EXIT執行的CONTINUE異常(Databricks Runtime 18.1 及以上版本)。 在條件處理程式中,您可以 RESIGNAL 原始例外狀況、SIGNAL 新的例外狀況,或結束複合語句而不例外狀況。

條件處理程式可以定義為處理三個不同的條件類別:

  • 一或多個具名條件,可以是特定 Databricks 定義的錯誤類別,例如 DIVIDE_BY_ZERO 或使用者宣告的條件。 這些處理程式會處理這些特定條件。

  • 一或多個 SQLSTATE,可由 Databricks 或使用者 SIGNAL 語句引發。 這些處理程式可以處理與該 SQLSTATE相關聯的任何條件。

  • 泛型 SQLEXCEPTION 處理程式可以捕捉掉入 SQLEXCEPTION 的所有條件(任何不是 SQLSTATE 且不是 XX***02***)。

  • NOT FOUND處理器會捕捉所有使用 SQLSTATE 類別的條件,該類別'02xxx'包含在取得游標結果集結束後(Databricks Runtime 18.1 及以上版本)之外時所產生的 CURSOR_NO_MORE_ROWS 條件。

下列是用來決定哪一個條件處理程式適用於例外狀況。 這個條件處理程式稱為 最適當的處理程式

  • 條件處理程式不能套用至在其本身主體中定義的任何語句,或是相同複合語句中宣告的任何條件處理程序主體。

  • 在引發例外狀況的最內層複合語句中定義的適用條件處理程式是適當的。

  • 如果有多個適當的處理程式可用,最特定的處理程式是最適當的處理程式。 例如,具名條件上的處理程式比具名 SQLSTATE上的處理程式更具體。 泛型 EXCEPTION 處理程式是最不特定的。

條件處理器的結果如下:

  • EXIT處理器執行其語句後,退出宣告該處理器的複合語句。 該複合語句中開啟的所有游標及巢狀複合語句皆隱含封閉。
  • CONTINUE處理器執行其語句後,繼續執行提出該條件的語句後續的語句。
  • 除非處理程式 SIGNALRESIGNAL定義了自己的條件,否則條件處理程式的結果是執行宣告該處理程式的複合語句之後的語句。

SQL 預存程式

適用於: 已選擇「是」 Databricks SQL 已選擇「是」 Databricks 運行時 17.0 及以上

您可以使用 CREATE PROCEDURE 語句,在 Unity 目錄中保存 SQL 腳本。 接著,您可以將該程序的存取權授予其他主體。 然後,這些主體可以使用 CALL 語句來叫用程式。

Note

透過 Databricks ODBC 驅動程式呼叫 SQL 儲存程序,需達到 ODBC 驅動 程式版本 2.11 或以上。

控制流程語句清單

以下是支援的控制流程語句清單:

游標語句列表

以下游標語句在 Databricks Runtime 18.1 及以上版本中被支援。 游標在 複合語句中宣告。