SET SCHEMA 语句
SET SCHEMA语句为CURRENT SCHEMA特殊寄存器赋值。 如果包与DYNAMICRULES BIND选项绑定,则此语句不影响用于非限定数据库对象引用的限定符。
调用 SET SCHEMA
此语句可嵌入应用程序中或者以交互方式发出。 它是可动态准备的可执行语句。
授权 SET SCHEMA
不需要执行任何操作。
语法 SET SCHEMA
描述 SET SCHEMA
- schema-name
- 标识模式。 在设置当前架构时,不验证架构是否存在。 例如,如果一个模式名称拼写错误,可能会影响后续SQL的运行方式。
- SESSION_USER 或 USER
- 指定 SESSION_USER(USER)特殊寄存器的值。
- 主机变量
- 指定一个包含模式名称的主变量。 内容不会自动变为大写。
主机变量必须:
- 可以是CHAR、VARCHAR、GRAPHIC或VARGRAPHIC变量。 宿主变量内容的实际长度不得超过模式名称的长度。
- 不能设置为空。 如果宿主变量有一个相关的指示变量,则该指示变量的值不能为空。
- 包含一个左对齐的架构名称,该名称符合普通标识符或分隔标识符的规则。 如果标识符是定界符,则不能为空或仅包含空格。
- 如果宿主变量是固定长度的,则在右侧用空格填充。
- 不包含 SESSION_USER、USER 或 DEFAULT。
- 字符串常量
- 指定一个包含模式名称的字符串常量。 内容不会自动变为大写。
该字符串常量必须:
- 长度不得超过模式名称的最大长度。
- 包含一个左对齐的架构名称,该名称符合普通标识符或分隔标识符的规则。 如果标识符是定界符,则不能为空或仅包含空格。
- 不包含 SESSION_USER、USER 或 DEFAULT。
- 缺省值
- 指定将当前模式设置为初始值,就像在应用过程中从未明确设置过一样。 有关当前方案初始值的信息,请参阅当前方案特殊登记册。
备注 SET SCHEMA
- 关键词注意事项:
- 将单个关键字(如SESSION_USER或DEFAULT)指定为单个关键字或分隔标识符是有区别的。 为了表示应该使用 SESSION_USER 特殊寄存器的当前值来设置当前模式,请将 SESSION_USER 指定为关键字。 为了表示特殊寄存器应设置为默认值,请指定 DEFAULT 作为关键字。 如果将 SESSION_USER 或 DEFAULT 指定为分隔标识符(例如“SESSION_USER”),则将其解释为该值的架构名称(“SESSION_USER”)。
- 交易注意事项:
- SET SCHEMA语句不是可提交操作。 ROLLBACK对CURRENT SCHEMA没有影响。
- 指定值的使用:
- 当前模式特殊寄存器的值(由该语句设置)在所有动态SQL语句中用作模式名称。 限定符绑定选项指定了模式名称,用于在静态SQL语句中作为非限定数据库对象名称的限定符。
- 对其他特殊登记的影响:
- 设置当前模式特殊寄存器不会影响任何其他特殊寄存器。 因此,当前模式不会包含在SQL路径中,该路径用于解析动态SQL语句中对函数、过程和用户定义类型的非限定引用。 为了在SQL路径中包含当前模式值,每当发出SET SCHEMA语句时,也要发出SET PATH语句,其中包含SET SCHEMA语句中的模式名称。
例子 SET SCHEMA
示例1 :以下语句用于设置当前模式特殊寄存器。
EXEC SQL SET SCHEMA RICK;示例2: 以下示例将当前模式特殊寄存器的当前值检索到名为CURSCHEMA的主变量中。
EXEC SQL SELECT CURRENT SCHEMA INTO :CURSCHEMA
FROM SYSIBM.SYSDUMMY1;主变量值为RICK。例3: 假设以下语句已发出:
SET CURRENT SQLID = 'USRT001';
SET CURRENT SCHEMA = 'USRT002';此时,两个特殊寄存器中的值不同。 任何后续的CREATE语句都将使用 USRT002 作为隐式限定符,但新创建对象的所有者是 USRT001。示例 4: 假设 CURRENT SCHEMA 的值为“Jane”,并且使用该值建立了 PATH 特殊寄存器的默认值(即 PATH 的值为 “SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“JANE”)。 将当前模式特殊寄存器的值更改为“John”。
SET CURRENT SCHEMA = 'JOHN';要更改SQL路径以使用更新的当前模式值“JOHN”,请发出SET PATH语句以更改PATH特殊寄存器的值,将“JOHN”指定为要检查的第一个模式:SET PATH = 'JOHN', CURRENT PATH;或者,提交会导致重新初始化 PATH。 否则,路径将保留为 “SYSIBM”、“SYSFUN”、“SYSPROC”、“SYSIBMADM ”、“JANE”),这可能会导致不合格的对象名称解析为“JANE”,而您希望它们解析为“JOHN”。