程序中有一段代码的功能是向某张表中插入一条语句,从日志中打印出来的SQL语句如下:
INSERT INTO T_PP_SEND ( ID, MOBILE, PUSH_ID, TOTAL_MSG_NUM, MSG_INDEX, MSG_TYPE, SEND_MSG,REQUIRE_DATE, PROCESS_FLAG, OTAMSGID, SENDCOUNT, RFMBATCH, CHANNEL ) VALUES (SEQ_PP_SEND.NEXTVAL, '13872546870' , SEQ_PUSH.NEXTVAL , 1,1,1,'AnAAABkRAgAAEbAAEAAAAAAoAMjbweqtYZCxAQUA',sysdate, 0, 0, 0,1000 ,1)
通过PL/SQL执行,插入成功
通过SQLPLUS执行,插入成功
但是只要程序运行时,就会给出一个"java.sql.SQLException: ORA-00972: 标识过长"的异常,插入不成功。而且错误日志指向的就是这条语句错误 曾经考虑过字符集和表结构的关系,做过改动,情况依然存在。
这张表修改之后的表结构如下:
Name Type Nullable Default Comments
------------- -------------- -------- ------- --------
ID NUMBER(10)
MOBILE VARCHAR2(3000)
PUSH_ID NUMBER(10)
TOTAL_MSG_NUM NUMBER(10)
MSG_INDEX NUMBER(10)
MSG_TYPE NUMBER(10)
SEND_MSG VARCHAR2(3000)
REQUIRE_DATE DATE
DEAL_DATE DATE Y
PROCESS_FLAG NUMBER(10)
OTAMSGID NUMBER(20)
SENDCOUNT NUMBER(10)
RFMBATCH NUMBER(10) Y
CHANNEL NUMBER(10) Y 请各位帮忙看看
INSERT INTO T_PP_SEND ( ID, MOBILE, PUSH_ID, TOTAL_MSG_NUM, MSG_INDEX, MSG_TYPE, SEND_MSG,REQUIRE_DATE, PROCESS_FLAG, OTAMSGID, SENDCOUNT, RFMBATCH, CHANNEL ) VALUES (SEQ_PP_SEND.NEXTVAL, '13872546870' , SEQ_PUSH.NEXTVAL , 1,1,1,'AnAAABkRAgAAEbAAEAAAAAAoAMjbweqtYZCxAQUA',sysdate, 0, 0, 0,1000 ,1)
通过PL/SQL执行,插入成功
通过SQLPLUS执行,插入成功
但是只要程序运行时,就会给出一个"java.sql.SQLException: ORA-00972: 标识过长"的异常,插入不成功。而且错误日志指向的就是这条语句错误 曾经考虑过字符集和表结构的关系,做过改动,情况依然存在。
这张表修改之后的表结构如下:
Name Type Nullable Default Comments
------------- -------------- -------- ------- --------
ID NUMBER(10)
MOBILE VARCHAR2(3000)
PUSH_ID NUMBER(10)
TOTAL_MSG_NUM NUMBER(10)
MSG_INDEX NUMBER(10)
MSG_TYPE NUMBER(10)
SEND_MSG VARCHAR2(3000)
REQUIRE_DATE DATE
DEAL_DATE DATE Y
PROCESS_FLAG NUMBER(10)
OTAMSGID NUMBER(20)
SENDCOUNT NUMBER(10)
RFMBATCH NUMBER(10) Y
CHANNEL NUMBER(10) Y 请各位帮忙看看
解决方案 »
- pl/sql developer跳过数据库验证的问题
- win7 安装oracle 10g 后需要主机身份验证,但是总是不能验证通过
- 插入日期跟显示日期的格式为什么不一样?
- 求教oracle中如何定时删除一个月前的数据
- 请问各位大侠,触发器要在触发后查询本表,有什么办法么?
- 请问大家把oracle9i的表导入到oracle10g,这里哪里错了?
- oracle9i的简单问题?
- 一个导入数据表的问题?急!! supershb(phenix)请进.
- oracle 8.1.7 客户端如何在windows XP 下安装!!!
- oracle sql语句 将某死为零的更新成另外一列的值,不为0的有值的不更新。
- 求助 --- oracle面试题目 解析!
- orcle正负数.
本身能存放的字符数量远远大于VARCHAR2(3000)能存放的在线等,谢谢
StringBuffer sql = new StringBuffer
("select * from t_rsd_directory where directoryid = '");
sql.append(directoryid);
sql.append("'");
System.out.println(sql);
rs = stmt.executeQuery(sql.toString());
我的directoryid也是很长,超过30个字符。
原来就是忘记字符需要用单引号扩着。加上单引号就好了。