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 &
相关文档:
2010年5月25日 富士康11跳楼自杀的这天。传闻oracle 10g r203自动分析作业不是很靠谱,具体为什么不得而知!今天老库的机器要被搬走,看到上面有个目录是DBA导数据而用的,还留着老库迁到新库的DMP数据文件309G。想老库真正用到的表比较少,数据量会小很多。为了知道具体量,所以自己试玩下EXP导数据。先试了下用户表590万1. ......
在创建数据库时,SPFile文件中部分必须考虑的参数值:
基本规则
a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列出那些需要修改的参数,其它保持默认值即可。
b.SPFile文件中只能包含参数赋值语句和注释语句。注释语句以“#”符合开头,是单行注释。
c.SPFile文 ......
author:skate
time:2010-05-25
数据文件管理
1. datafile add
2. datafile delete
3. datafile resize
4. datafile rename
1. datafile add
添加表空间,从而添加datafile
SQL> create tablespace tbs_skate
2 datafile '+datagroup' size 20m;
Tablespace created
SQL> sel ......
为这些用户名设置足够强壮的口令或锁定无用的默认用户。
SQL语句修改:
连接至Oracle后使用如下命令修改口令:
alter user system(用户名) identified by manager(密码);
连接至Oracle后使用如下命令锁定账号:
alter user test(用户名) account lock;
图形窗口修改:
Oracle服务openview上的用户:SCOT ......