oracle insert into 字段是否有长度限制?

jzbest 2009-09-19 03:28:03
  SQL语句如下:
  insert into rmwjb(SERIALNO,SM,WJNR,fs) values (:ll_maxsn,:is_bt,:is_wjnr,:ii_fs);

————————————————————————————

  当变量ls_wjnr大于一定长度后(2988),无法执行插入操作,如何解决这个问题?
...全文
588 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzbest 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 banana_97 的回复:]
使用clob类型或者用varchar2(8000)
[/Quote]

——————————————————————

  这个“varchar2(8000)”能用吗?请问,varchar2(****)中,*最大值可取多少?
banana_97 2009-09-22
  • 打赏
  • 举报
回复
使用clob类型或者用varchar2(4000)
banana_97 2009-09-22
  • 打赏
  • 举报
回复
使用clob类型或者用varchar2(8000)
知母康 2009-09-20
  • 打赏
  • 举报
回复
使用clob类型
jzbest 2009-09-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oraclemch 的回复:]
引用 5 楼 jdsnhan 的回复:
SQL codealtertable rmwjb modify jwnrvarchar2(4000);


正解啊,但是为什么varchar2(2000)应该是最大是2000个汉字啊,为什么会在>2988呢才会报错呢?
[/Quote]
————————————————————————

  事实上,只要超过2000都会报错,不过我的例子恰好是2988而已。

  但是,如果要保存到字段的内容大于4000的话,如何处理呢?

  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oraclemch 的回复:]
引用 5 楼 jdsnhan 的回复:
SQL codealtertable rmwjb modify jwnrvarchar2(4000);


正解啊,但是为什么varchar2(2000)应该是最大是2000个汉字啊,为什么会在>2988呢才会报错呢?
[/Quote]
难道你插入2000~2987个字符的时候没有报错吗?
jzbest 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jdsnhan 的回复:]
SQL codealtertable rmwjb modify jwnrvarchar2(4000);
[/Quote]

——————————————————————————————

  如果要导入的字符串长度大于4000的话,如何处理?CLOB
wh62592855 2009-09-19
  • 打赏
  • 举报
回复
2988插入2000当然不行了
就按楼上的方法
把jwnr 字段属性改一下
oraclemch 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jdsnhan 的回复:]
SQL codealtertable rmwjb modify jwnrvarchar2(4000);
[/Quote]

正解啊,但是为什么varchar2(2000)应该是最大是2000个汉字啊,为什么会在>2988呢才会报错呢?
jdsnhan 2009-09-19
  • 打赏
  • 举报
回复
alter table rmwjb modify jwnr varchar2(4000);
zhaoweiting0609 2009-09-19
  • 打赏
  • 举报
回复
你定义的太短
liusong_china 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 jzbest 的回复:]
  SQL语句如下:
  insert into rmwjb(SERIALNO,SM,WJNR,fs) values (:ll_maxsn,:is_bt,:is_wjnr,:ii_fs);

————————————————————————————

  当变量ls_wjnr大于一定长度后(2988),无法执行插入操作,如何解决这个问题?

[/Quote]

wjnr为 Vchar2 ,2000

---------------------------
是你的字段长度定义的小了。。。。。。。。。

试试把wjnr定义为 varchar2(4000),再执行一下SQL:
insert into rmwjb(SERIALNO,SM,WJNR,fs) values (:ll_maxsn,:is_bt,:is_wjnr,:ii_fs);
jzbest 2009-09-19
  • 打赏
  • 举报
回复

wjnr为 Vchar2 ,2000
jzbest 2009-09-19
  • 打赏
  • 举报
回复

  jwnr为备注字段、
雪狼__ 2009-09-19
  • 打赏
  • 举报
回复
varchar2 类型在9i里支持最大4000个byte;
jzbest 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jzbest 的回复:]

  按照jdsnhan的方法,问题已经初步解决,打开表显示字段内容已经全部插入。

  但是在PB数据窗口中,wjnr列为编辑框,将edit.limit设定为4000之后,仍然无法显示该字段所有内容。

  何故?
[/Quote]

——————————————————————

   这个我知道,变更数据库表字段长度后,需要重新生成数据窗口:打开数据窗口的SQL,切换到语法窗口,随便加个空格,关闭,保存,即可。

jzbest 2009-09-19
  • 打赏
  • 举报
回复

  按照jdsnhan的方法,问题已经初步解决,打开表显示字段内容已经全部插入。

  但是在PB数据窗口中,wjnr列为编辑框,将edit.limit设定为4000之后,仍然无法显示该字段所有内容。

何故?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧