varchar oracle最大长度,关于oracle varchar2的最大长度

博客讲述了在Oracle数据库中,VARCHAR2类型的字段和变量的最大长度分别为4000和32767,但实际操作中函数返回值受到4000字符的限制。作者通过示例演示了当字符串超过4000字符时,函数执行会报错,提醒读者注意这个常见误区。
摘要由CSDN通过智能技术生成

关于 varchar2 的最大长度

varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。今天犯了一个小错误,就是函数的varchar2类型的返回值长度也是4000,而不是我以为的32767。

想了一下,这是一个比较容易出错的地方。因为在函数中我可以声明长度超过4000的字符串变量,并且将它作为返回值,这里是不会提示编译错误的。这个函数平时都可以正常执行,而一旦这个字符串长度超过4000,函数执行就会出错。所以这个问题虽然比较简单,仍然记录一下。

C:\Documents and Settings\yuechao.tianyc>sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 5月 5 17:15:59 2009

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

请输入用户名: test/test

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> create or replace function funny return varchar2

2 is

3 v_yct varchar2(32767);

4 begin

5 v_yct := rpad('a', 4001, 'b');

6 return v_yct;

7 end;

8 /

函数已创建。

SQL> select funny from dual;

select funny from dual

*

第 1 行出现错误:

ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

ORA-06512: 在 "TEST.FUNNY", line 6

本来以为记录下来就好。刚才跟一位同事讨论了一下,认为有可能在schema级varchar2的长度限制都是4000,而在PL/SQL代码级的长度限制是32767。下面继续测试:

-- 1. 作为函数入参的限制是32767

SQL> create or replace function funny( p_char in varchar2 ) return number

2 is

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值