求解决:oracle插入数据时出现字符串文字太长怎么办,下面是代码,谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解决:oracle插入数据时出现字符串文字太长怎么办,下面是代码,谢谢相关的知识,希望对你有一定的参考价值。
select * from 表DELETEFROM 表WHERE ID = 'process-service';INSERT INTO 表( ID, CODE, NAME, CATEGORY, ICON, DATA, CREATE_TIME, LAST_MODIFIED_TIME, PARENT_ID, SN, ACTIVE, OWNER)VALUES( 'process-service', '设计器/流程引擎/服务接口/流程管理', '流程管理服务接口', '后台服务', NULL, --字符串过长 '"id":"process-service","category":"后台服务",。。。。义ID\n* @param user\n*/\ndef save4New(Map processDefinition, Map '', 0, 1, NULL);
参考技术A 用户在通过sql注入数据库过程中某个字段长度超出数据库中字段的定义长度就会报这个错误。如:insert into tablename(name) values(’123456789‘);但是定义的name字段的长度只有8个,就会报错。
解决办法:将oracle中的表字段长度变长即可。
sql:alter table tablename modify (name varchar2(200));
解释:就是修改tablename表中的name字段长度为200个字符。 参考技术B 修改字段长度,确保大于输入字符的长度 如果是varchar ,char 字段中存中文,需要 定义的长度是最大中文字符数的2倍本回答被提问者采纳 参考技术C 在创建表的时候将空间设置的大一些,用varchar2格式! 参考技术D 修改列长度
oracle 存储过程循环插入数据不定时出现卡死,求高手指点,循环过程如下:
WHILE to_char(v_looptime,'yyyy-MM-dd') <= v_loopenddate
LOOP
--- 日发生额
v_eyerydate := to_char(v_looptime,'yyyy-MM-dd');
insert into gl_dailybalancetemp(creditamount,creditquantity,debitamount,debitquantity,fraccreditamount,fracdebitamount,localcreditamount,localdebitamount,pk_accchart,pk_accasoa,pk_accountingbook,deverydate,year,period,pk_currtype)
select tempb.creditamount,tempb.creditquantity,tempb.debitamount,tempb.debitquantity,
tempb.fraccreditamount,tempb.fracdebitamount,tempb.localcreditamount,tempb.localdebitamount,
tempb.pk_accchart,tempb.pk_accasoa,tempb.pk_accountingbook,tempb.eyerydate,tempb.year,tempb.period,tempb.pk_currtype
from
(
select pk_accountingbook,pk_accchart,pk_accasoa from gl_dailybalancevoucher where deverydate<= '' || v_eyerydate || ''
group by pk_accountingbook,pk_accchart,pk_accasoa
) tempa
inner join
(
select sum(b.creditamount) creditamount,sum(b.creditquantity) creditquantity,sum(b.debitamount) debitamount,sum(b.debitquantity) debitquantity,
sum(b.fraccreditamount) fraccreditamount,sum(b.fracdebitamount) fracdebitamount,sum(b.localcreditamount) localcreditamount,sum(b.localdebitamount) localdebitamount,
b.pk_accchart,b.pk_accasoa,a.pk_accountingbook,v_eyerydate eyerydate,substr(min(a.year|| '-' ||a.period),0,4) year,substr(min(a.year|| '-' ||a.period),6,2) period,max(b.pk_currtype) pk_currtype
from gl_voucher a inner join gl_detail b on a.pk_voucher=b.pk_voucher
where nvl(a.dr,0)=0 and nvl(b.dr,0)=0 and a.year !='0000' and a.period !='00' and a.prepareddate >= ''|| v_startdate||'' and a.prepareddate<= ''|| v_eyerydate||''
and a.pk_accountingbook in(select pk_accountingbook from gl_dailybalancevoucher where substr(deverydate,0,4)=''|| v_startyear || '')
and b.pk_accasoa in(select pk_accasoa from gl_dailybalancevoucher where substr(deverydate,0,4)=''|| v_startyear || '')
group by a.pk_accountingbook,b.pk_accchart,b.pk_accasoa
)tempb on tempa.pk_accountingbook=tempb.pk_accountingbook and tempa.pk_accasoa=tempb.pk_accasoa;
commit;
v_looptime := v_looptime+1;
END LOOP;
按照日循环,原表数据稳定,没变化,但是偶尔循环能执行过去,大部分情况下就不定时的卡到哪个日期过不去。
以上是关于求解决:oracle插入数据时出现字符串文字太长怎么办,下面是代码,谢谢的主要内容,如果未能解决你的问题,请参考以下文章
oracle 存储过程循环插入数据不定时出现卡死,求高手指点,循环过程如下:
ORA-01704: 字符串文字太长,插入语句SQL中,报这样的错误?怎么解决?
oracle 11g 用impdp导入dmp数据库时出现了以下错误,如何解决!!!!求大神帮助,导入语句下面有