使用逻辑字符语义定义变量

当为当前会话指定了 SQL_LOGICAL_CHAR 配置参数,设置为 'ON'或比 1 大的值时, GBase 8s 在以下数据类型的 SPL 变量的声明中将大小声明解释为逻辑字符,而不是字节:
  • CHAR 或 CHARACTER
  • CHARACTER VARYING 或 VARCHAR
  • LVARCHAR
  • NCHAR
  • NVARCHAR
  • 基于内置字符数据类型的 DISTINCT 类型
  • 基于之前列出的数据类型的 DISTINCT 类型
  • 任何先前列出的数据类型的 ROW 数据类型字段
  • LIST 、MULTISET 或 SET 集合数据类型中的数据类型的元素

为数据库语言环境启用逻辑字符语义可确保有足够的存储空间可供数据类型存储指定数量的逻辑字符。SPL 变量的结构字节大小是数据类型的声明大小乘以 SQL_LOGICAL_CHAR 值,如果为 2 、3 或 4 或者(如果 SQL_LOGICAL_CHAR 设置为 'ON')乘以数字的乘积的数据库语言环境的代码集中最大的逻辑字符所需的存储字节数。

如果客户端会话连接到在创建数据库时启用了 SQL_LOGICAL_CHAR 配置参数的数据库,则该设置将在连接时生效。

在数据类型声明中使用 LIKE 关键字的 DEFINE 语句创建其数据类型与 LIKE 规范引用的列的模式匹配的 SPL 变量。如果已定义,SQL_LOGICAL_CHAR 设置对 DEFINE 使用 LIKE 关键字声明的变量的内存大小没有影响。

有关使用多字节代码集(如 UTF-8)的语言环境中 SQL_LOGICAL_CHAR 设置的影响的详细信息,其中单个逻辑字符可能需要多个字节的存储,请参阅 GBase 8s 管理员参考手册中有关 SQL_LOGICAL_CHAR 配置参数的描述。有关多字节语言环境和逻辑字符的其它信息,请参阅 GBase 8s GLS 用户指南