
# SET
#### 功能描述
用于修改运行时配置参数。
#### 注意事项
大多数运行时参数都可以用SET在运行时设置，但有些则在服务运行过程中或会话开始之后不能修改。
#### 语法格式
- 设置所处的时区。
  ```
  SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT };
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002526896962.png "点击放大")
  
- 设置所属的模式。
  ```
  SET [ SESSION | LOCAL ] 
      {CURRENT_SCHEMA { TO | = } { schema | DEFAULT }
      | SCHEMA 'schema'};
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002526896964.png "点击放大")
  
- 设置客户端编码集。
  ```
  SET [ SESSION | LOCAL ] NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT};
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002527056922.png "点击放大")
  
- 设置XML的解析方式。
  ```
  SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT };
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002558216779.png "点击放大")
  
- 设置其他运行时参数。
  ```
  SET [ SESSION | LOCAL ]
      {config_parameter { { TO | = } { value | DEFAULT } 
                          | FROM CURRENT }};
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002558056811.png)
  
 
#### 参数说明
- **SESSION**
  声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现，则SESSION为缺省值。
  如果在事务中执行了此命令，命令的产生影响将在事务回滚之后消失。如果该事务已提交，影响将持续到会话的结束，除非被另外一个SET命令重置参数。
  
- **LOCAL**
  声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后，会话级别的设置将再次生效。
  不论事务是否提交，此命令的影响只持续到当前事务结束。一个特例是：在一个事务里面，既有SET命令，又有SET LOCAL命令，且SET LOCAL在SET后面，则在事务结束之前，SET LOCAL命令会起作用，但事务提交之后，则是SET命令会生效。
  
- **TIME ZONE timezone**
  用于指定当前会话的本地时区。
  取值范围：有效的本地时区。该选项对应的运行时参数名称为TimeZone，DEFAULT缺省值为PRC。
  
- **CURRENT_SCHEMA** **schema**
  CURRENT_SCHEMA用于指定当前的模式。
  取值范围：已存在模式名称。
  
- **SCHEMA schema**
  同CURRENT_SCHEMA。此处的schema是个字符串。
  例如：set schema 'public';
  
- **NAMES {'charset_name' \[COLLATE 'collation_name'\] \| DEFAULT};**
  - 在sql_compatibility = 'MYSQL'模式下，并设置b_format_version='5.7'、b_format_dev_version='s2'时，支持指定COLLATE子句。 描述：用于设置客户端字符编码，常量字符串的字符集、字符序，及返回结果的字符集。
    等价为：
    ```
    SET client_encoding = charset_name; 
    SET character_set_connection = charset_name;
    ```
    ```
    SET collation_connection = collation_name; 
    SET character_set_results = charset_name;
    ```
    取值范围：MYSQL兼容模式下支持的字符集、字符序。暂不支持指定charset_name与数据库字符集不同。
    
  
  - 其他场景下不支持指定COLLATE子句。 描述：用于设置客户端的字符编码。
    等价为：
    ```
    SET client_encoding TO charset_name;
    ```
    取值范围：有效的字符编码。默认编码为UTF8。
    
   
- **XML OPTION option**
  用于设置XML的解析方式。
  取值范围：CONTENT（缺省）、DOCUMENT
  
- **config_parameter**
  可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。
  
- **value**
  config_parameter的新值。可以声明为字符串常量、标识符、数字，或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。
  
 
#### 示例
```
--设置所处的时区。
gaussdb=# SET TIME ZONE 'PST8PDT';
--设置模式搜索路径。    
gaussdb=# SET search_path TO tpcds, public;
--设置客户端编码集。
gaussdb=# SET client_encoding TO utf8;
--设置XML的解析方式。
gaussdb=# SET XML OPTION DOCUMENT;
--把日期时间风格设置为传统的 POSTGRES 风格(日在月前)。
gaussdb=# SET datestyle TO postgres;
```
#### 相关链接
[RESET](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0665.html#ZH-CN_TOPIC_0000002559105963)，[SHOW](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0689.html#ZH-CN_TOPIC_0000002559105977)
