Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


字串超长时是否使用截断并告警(str_trunc_warning)

📄字数 857
👁️阅读量 加载中...

引入版本

v11.0.0

功能描述

系统内被截断的字符串是否以警告的形式上报。

参数属性

属性属性值
参数类型BOOLEAN
默认值FALSE
取值范围TRUE,FALSE
影响范围系统级
修改方式在线修改,立即生效

使用场景说明

  1. 该参数控制系统对产生截断的字符串的处理方式。
str_trunc_warning作用及影响
true数据长度超过目标类型精度,数据被截断处理,并以警告的形式通知客户端(send_warning = true 的前提)。
false数据长度超过目标类型精度,系统上报 E17111E19230 异常,并中断当前任务。
  1. 字符串截断处理的场景主要有:
字符串截断处理的可能场景
1. 针对带精度字符串字段的数据更新,新值长度大于原字段精度;
2. 针对带精度字符串字段的数据插入,新值长度大于原字段精度;
3. 在 PL/SQL 中对带精度的字符串变量赋值,字符串常量值长度大于被赋值变量的精度;
4. 其它数据类型向带精度的字符串数类型转换,原数据转换后数据长度大于目标精度;
5. DML INTO 场景,原字符串数据长度大于 INTO 的目标精度;

示例

sql
-- 在线修改 str_trunc_warning
SQL> SET str_trunc_warning TO true;

-- 在线查看 str_trunc_warning
SQL> SHOW str_trunc_warning

/*
 * 场景一:
 *   1. str_trunc_warning = false;
 *   2. auto_commit = true;
 */
 SQL> CREATE TABLE t1(c1 VARCHAR(5)); -- 创建表;
 SQL> INSERT INTO t1 VALUES('abcdef'); -- E19230 异常,中断任务;

/*
 * 场景一:
 *   1. str_trunc_warning = true;
 *   2. auto_commit = true;
 *   3. send_warning = true;
 *   4. 基于 "场景一" 的环境;
 */
 SQL> INSERT INTO t1 VALUES('a'); -- 插入测试数据;
 SQL> UPDATE t1 SET c1 = '123456'; -- 执行成功,数据被截断为 '12345',
                                   -- 并附带警告信息;