全部產品
Search
文件中心

Lindorm:會話變數

更新時間:Dec 14, 2024

Lindorm SQL支援為每個串連會話設定獨立的會話變數以控制會話的狀態,這些狀態變更只會對當前會話生效,不影響其他會話。

引擎與版本

該文法適用於寬表引擎和時序引擎。

重要

要求Lindorm SQL為2.8.4.0以上版本。如何查看Lindorm SQL的版本,請參見SQL版本說明

文法

設定會話變數

set_variable_statement  ::= SET [SESSION] variable_identifier '=' literal

查詢會話變數

query_variable_statement ::= SELECT @@variable_identifier

使用說明

變數名(variable_identifier)

變數名稱的詞法規則與一般標識符相同,標識要設定的變數名稱。標識符的說明,請參見標識符

會話配置項(SESSION)

重要
  • SET語句設定的會話配置項優先順序高於ALTER SYSTEM設定的系統全域配置項,當兩者衝突時,以SET語句設定的會話配置項的值為準。

  • 會話配置項設定後會對SQL引擎的行為產生影響,因此建議您充分理解參數含義後再謹慎修改。

配置項名稱

資料類型

適用引擎

說明

TIME_ZONE

重要

僅MySQL協議支援該配置項。MySQL協議串連方式,請參見使用MySQL協議(推薦)

字串

寬表引擎

設定當前串連會話的時區,預設是東八區。

SQL_MODE

重要

僅Lindorm SQL版本為2.8.4.8及以上版本支援。

字串

  • 寬表引擎

  • 時序引擎

設定SQL引擎的解析行為模式。您可以通過在字串中間添加半形逗號(,)來疊加多種模式。

目前僅支援設定為NO_BACKSLASH_ESCAPES,表示解析字串常量時,不使用反斜線(\)作為轉義符。

樣本

修改當前會話時區

  1. 修改時區前,執行以下語句,查看當前會話時區。

    SELECT @@TIME_ZONE;

    返回結果:

    +-------------+
    | @@TIME_ZONE |
    +-------------+
    | +08:00      |
    +-------------+
  2. 修改當前會話時區為UTC時區。

    SET TIME_ZONE='UTC';

    再次執行SELECT @@TIME_ZONE;語句,驗證是否修改成功。返回結果如下:

    +-------------+
    | @@TIME_ZONE |
    +-------------+
    | UTC         |
    +-------------+
    說明

    會話時區與時間戳記類型資料關係的完整樣本,請參見如何設定串連時區

設定SQL引擎的解析行為模式

  1. 先直接查詢一個字串常量運算式。

    SELECT '{\"key\":\"va\\lu\'e\r\n\"}';

    返回結果:

    +---------------------+
    | EXPR$0              |
    +---------------------+
    | {"key":"va\lu'e
    "} |
    +---------------------+
  2. 設定SQL引擎的解析行為模式,解析字串常量時,不使用反斜線(\)作為轉義符。

    SET SQL_MODE='NO_BACKSLASH_ESCAPES';

    再次執行SELECT '{\"key\":\"va\\lu\'e\r\n\"}';語句,驗證是否修改成功。返回結果如下:

    +-----------------------------+
    | EXPR$0                      |
    +-----------------------------+
    | {\"key\":\"va\\lu\'e\r\n\"} |
    +-----------------------------+