暂无图片
Oracle的VARCHAR2在建表的时候最大存4000 bite,为什么在存储过程里面可以存32767?
我来答
分享
豆豆
2022-03-02
Oracle的VARCHAR2在建表的时候最大存4000 bite,为什么在存储过程里面可以存32767?

Oracle的VARCHAR2在建表的时候最大存4000 bite,为什么在存储过程里面可以存32767?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
吾喾

SQL参考手册中也明确指出VARCHAR2的最大大小为4000,注意此处的最大长度是指字节长度,而不是指字符个数。这个跟参数NLS_LENGTH_SEMANTICS有一定关系。

The maximum size of a CHAR or VARCHAR2 variable is 32,767 bytes, whether you specify the maximum size in characters or bytes.

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

这是个规则,它想怎么定就怎么定
https://dba.stackexchange.com/questions/88742/why-is-there-a-difference-in-the-character-limit-for-varchar2-in-sql-and-pl-sql

然后,从12c版本开始,可以通过调整系统参数max_string_size,来使varchar2字段扩充到最大32767的长度

alter system set max_string_size=extended scope=both;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
oracle中char关联问题
回答 1
第一条SQL,等号两侧都是char类型,char类型的比较是把短的值的右侧补空格补到和长侧的长度一致后再比,因此能查出来。在ORACLE中,rpad('yang',10)是varchar2(10)类型
Oracle expdp和impdp建表语句会带着表的supplemental log,导出或者导入的时候能排除这个信息吗?
回答 1
supplementallog选项被数据泵视为约束。所以在expdp\impdp时EXCLUDECONSTRAINT将会排除掉,但是,这也将排除所有的约束。如果你想保留其他约束,只需在导入后删除补充日
ORA-30732: 表中不包含可见的列
回答 2
已采纳
可能是查询了一个系统表或者确实存在不可见的字段要么就是数据字典不一致导致的
Oracle服务器端sqlplus在表里插入中文,sqlplus里能正常显示,客户端plsql显示乱码。客户端plsql插入中文,plsql里能正常显示,服务端sqlplus乱码
回答 1
已采纳
你用sqlplus插入中文的时候,是用的手敲命令还是用的sql文件?有没有检查一下sql文件的编码是utf8还是gbk?
12c的新特性Oracle Sharding在生产的实际应用情况如何?
回答 2
已采纳
OracleSharding优势OracleSharding技术提供线性扩展和失败隔离的优点:线性扩展:因为每个shard是一个独立的数据库,通过增加新的Shard节点,来线性扩展性能。自动rebal
Oracle mergeinto单列uid对比,为什么加索引会比不加索引快几十倍?
回答 1
最好把mergeinto的语句贴出来。加了索引的话,肯定快啊,通过索引定位数据比全表扫要快很多吧。
oracle关闭实例之后,内存并没有释放是什么原因呢?
回答 2
输入:freem,把结果复制过来看看。可能你看到的是缓存。
oracle 备份指定归档的命令是什么?
回答 1
已采纳
plusarchivelog参考https://docs.oracle.com/cd/E1188201/backup.112/e10643/rcmsynta007.htmRCMRF107
如何进行归档丢失恢复 RMAN-06556
回答 3
已采纳
本身就是不完全恢复,你启动实例到MOUNT,然后在SQLPLUS里执行:recoverdatabaseusingbackupcontrolfileuntilcancel;看报什么提示
Oracle:impdp时掉主键导致导入数据有重复记录?
回答 2
原表可能有重复记录,然后排除比较困难。用了延迟校验,只对后续数据加约束,之前的数据不验证。这种在11g的时候就有。导出可能会被误以为主键失效,其实不是的。