oracle 设置字符长度,Oracle字符串长度的问题

Oracle字符串长度的问题

今天碰到一个问题,通过一个SQL语句查询时,出如下问题:

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30

问题出现在通过WMSYS.WM_CONCAT_IMPL函数重新组装字符串的时候,组装的串过长,varchar2类型的数据类型最大为4000个字节,在PL/SQL中最大为32767,原因就在这WMSYS.WM_CONCAT_IMPL组装的这个字符串长度为18031,在schema级下varchar2最大是4000,超过最大长度,报错。(记下该问题,长记性~)

以下内容为转载,url:http://www.blogjava.net/wangbing/archive/2010/03/15/315482.html

关于 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 &

相关文档:

每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。Oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。

数据库系统权限(Dat ......

逻辑上:

Single column 单行索引

Concatenated 多行索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based函数索引

Domain 域索引

物理上:

Partitioned 分区索引

NonPartitioned 非分区索引

B-tree:

Normal 正常型B树

Rever Key 反转型B树

Bitmap 位图索引

索引结构:

B-tree:

适合与大量的增� ......

author:skate

time:2010-05-25

Oracle数据库管理脚本说明

Oracle 中的数据字典是数据库中的非常重要的一部分,提供了相关数据库的信息,它是所有Oracle用户(从应用的最终用户、应用的设计开发者到数据库管理员)的非常重要的信息来源。数据字典的创建,是在Oracle数据库创建完毕后,运行一些相关的数据库管理脚本来完 ......

查看oracle服务器字符集:select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET'

使用Pl/SQL 查询数据时乱码,插入数据时乱码

数据库服务器的字符集和客户端的字符集不同所造成的,修改数据库客户端的字符集和服务器的字符集一致

操作方法:

oracle 9i :修改本地注册表中ORACLE客户端� ......

if %time:~,2% leq 9  (set hh=0%time:~1,1%) else  (set hh=%time:~,2%)

exp wzolerp/wzolerp@wzol file=E:\数据库备份\wzolerp%date:~0,10%日%hh%时%time:~3,2%分.dmp log=E:\数据库备份\wzolerp%date:~0,10%日%hh%时%time:~3,2%分.log

exp wzolwms/wzolwms@wzol file=E:\数据库备份\wzolwms%date:~0,10%日 ......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值