sqlplus 19c varchar2 格式与 k 12c 不同

问题描述 投票:0回答:1

我们正在将数据库从 12c 更新到 19c,当然还有 Oracle 客户端。 我们确实有一些从 sqlplus 报告的作业。我们注意到 varchar2 字段在新的 19c sqlplus 中的格式不同。

简单的例子:

create table tmp_test (test_id varchar2(9) , test_name varchar2(30));
insert into tmp_test (TEST_ID, TEST_NAME) values ('123456789', 'test name 123456789');
insert into tmp_test (TEST_ID, TEST_NAME) values ('987654321', 'test name 987654321');
commit;

在12c中,默认格式是正确的:

SQL*Plus: Release 12.2.0.1.0 Production on Mon Oct 16 13:17:44 2023

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Mon Oct 16 2023 13:08:53 +01:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL> select * from tmp_test;

TEST_ID   TEST_NAME
--------- ------------------------------
123456789 test name 123456789
987654321 test name 987654321

SQL>

但是在 19c 中,由于某种原因,格式不同:

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Oct 16 13:25:59 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Mon Oct 16 2023 13:17:44 +01:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL> select * from tmp_test;

TEST_ID
------------------------------------
TEST_NAME
--------------------------------------------------------------------------------
123456789
test name 123456789

987654321
test name 987654321


SQL>

是否可以将格式恢复为 12c 版本而不添加显式列格式(如 column test_id format a9)?

此更改是否记录在某处?

oracle12c sqlplus oracle19c
1个回答
0
投票

在 19c 中,名称长度已从最多 30 个字符更改为最多 128 个字符。您看到的是 128 个字符溢出到新行。自己看看:

SQL> desc user_objects;

名称为空?类型


OBJECT_NAME VARCHAR2(128)

© www.soinside.com 2019 - 2024. All rights reserved.