SET SCHEMA 语句
SET SCHEMA 语句更改 CURRENT SCHEMA 专用寄存器的值。
此语句不受事务控制。 如果程序包与 DYNAMICRULES BIND 选项绑定,那么此语句不会影响用于非限定数据库对象引用的限定符。
调用
该语句可嵌入到应用程序中或以交互方式发出。 它是可动态准备的可执行语句。
授权
不需要执行任何操作。
语法
描述
- schema-name
- 此单部分名称标识应用程序服务器上存在的模式。 长度不得超过 128 字节 (SQLSTATE 42815)。 在设置模式时,不会验证该模式是否存在。 如果 schema-name 拼写错误,那么不会捕获错误,这可能会影响后续 SQL 语句的执行方式。
- 用户
- USER 专用寄存器中的值。
- SESSION_USER
- SESSION_USER 专用寄存器中的值。
- SYSTEM_USER
- SYSTEM_USER 专用寄存器中的值。
- CURRENT_USER
- CURRENT_USER 专用寄存器中的值。 host-variable
- CHAR 或 VARCHAR 类型的变量。 主变量 的内容长度不得超过 128 字节 (SQLSTATE 42815)。 它不能设置为空。 如果 host-variable 具有关联的指示符变量,那么该指示符变量的值不得指示空值 (SQLSTATE 42815)。
主机变量 的字符必须左对齐。 使用 主变量指定 schema-name 时,必须以预期的大小写指定所有字符,因为没有转换为大写字符。
string-constant - 最大长度为 128 字节的字符串常量。
规则
- 如果指定的值不符合 schema-name的规则,那么会产生错误 (SQLSTATE 3F000)。
- CURRENT SCHEMA 专用寄存器的值用作所有动态 SQL 语句中的模式名,但 CREATE SCHEMA 语句除外,该语句存在对数据库对象的非限定引用。
- QUALIFIER 绑定选项指定要用作静态 SQL 语句中未限定的数据库对象名的限定符的模式名。
注意
- CURRENT SCHEMA 专用寄存器的初始值等同于 USER。
- 设置 CURRENT SCHEMA 专用寄存器不会影响 CURRENT PATH 专用寄存器。 因此, CURRENT SCHEMA 将不包含在 SQL 路径中,并且函数,过程和用户定义的类型解析可能找不到这些对象。 要在 SQL 路径中包含当前模式值,每当发出 SET SCHEMA 语句时,还会发出包括来自 SET SCHEMA 语句的模式名在内的 SET PATH 语句。
- CURRENT SQLID 被接受为 CURRENT SCHEMA 的同义词,并且 SET CURRENT SQLID 语句的效果将与 SET CURRENT SCHEMA 语句的效果相同。 不会发生其他影响,例如语句授权更改。
示例
- 示例 1: 以下语句设置 CURRENT SCHEMA 专用寄存器。
SET SCHEMA RICK - 示例 2: 以下示例将 CURRENT SCHEMA 专用寄存器的当前值检索到名为 CURSCHEMA 的主变量中。
值将是先前示例设置的 RICK。EXEC SQL VALUES (CURRENT SCHEMA) INTO :CURSCHEMA;
