下面的代码中,列出了两张表的表结构及其中一张表关于列ISEDIT的数据情况,当我把其中一张有数据的表的数据住另外一张表里插入时,报出了下面的错误!!!
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA VARCHAR2(5) Y
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT VARCHAR2(5) Y
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO VARCHAR2(5) Y
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA VARCHAR2(5) Y
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT VARCHAR2(5) Y
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO VARCHAR2(5) Y
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
解决方案 »
- 求教一个统计合计SQL的写法
- 紧急问题
- 数据库插入
- 求教oracle中如何定时删除一个月前的数据
- 求条sql语句 如何按时间来查询呢?
- 求两段VB示例代码:用VB备份、及恢复ORACLE数据库。想要数据库在打开状态下也能进行的热备份
- 我在linux.0装oracle 8.1.7,为什么都是乱码/
- sql語句問題
- 索引问题(java.sql.SQLException: ORA-01502: 索引'SYSTEM.SYS_C005180'或这类索引的分区处于不可用状态)
- 怎么从bmp中导入一个表呀?
- 循环问题+时间加减问题!解决速度上分!在线等 谢谢各位!
- 求各个季度数据的SQL文,用相减的方式求得,希望各大虾指教帮忙!
Table altered
SQL> DESC CLIENTINFO_NEW
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
CONSULTA CLOB Y
INFORMACAO CLOB Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
SQL> DESC CLIENTINFO
Name Type Nullable Default Comments
---------------- -------------- -------- ------- --------
CLIENTSHORT VARCHAR2(25) Y
CLIENTFULL VARCHAR2(200) Y
ADDRESS VARCHAR2(200) Y
BAIRRO VARCHAR2(40) Y
MUNICIPIO VARCHAR2(60) Y
UF VARCHAR2(4) Y
CEP VARCHAR2(36) Y
CGC VARCHAR2(40) Y
INSCRICAO VARCHAR2(40) Y
FONE VARCHAR2(60) Y
FAX VARCHAR2(60) Y
TRANSPORTADOR VARCHAR2(50) Y
TELDETRANS VARCHAR2(40) Y
CREDITO VARCHAR2(10) Y
DUPLICATA CHAR(1) Y 0
SOCIO VARCHAR2(225) Y
ISEDIT CHAR(1) Y 0
PAYEE VARCHAR2(100) Y
RETURNRECORD VARCHAR2(40) Y
ARQUIVOGERADO CHAR(1) Y 0
INSCRICAOSUFRAMA VARCHAR2(30) Y
ADVICEPAYEE VARCHAR2(200) Y
CONSULTA VARCHAR2(2000) Y
INFORMACAO VARCHAR2(2000) Y
SQL> INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW;
INSERT INTO CLIENTINFO VARLUES SELECT * FROM CLIENTINFO_NEW
ORA-12899: 列 "JIANG"."CLIENTINFO"."ISEDIT" 的值太大 (实际值: 80, 最大值: 1)
SQL> SELECT MAX(LENGTH(ISEDIT)) FROM CLIENTINFO_NEW;
MAX(LENGTH(ISEDIT))
-------------------
1
SQL> SELECT MAX(ISEDIT) FROM CLIENTINFO_NEW;
MAX(ISEDIT)
-----------
0
这里已经显示CLIENTINFO_NEW的ISEDIT列值只有一位了
改成
insert into CLIENTINFO(字段列表) select 字段列表 from CLIENTINFO_NEW 的形式.
因为CLIENTINFO_NEW表这样创建的CREATE TABLE CLIENTINFO_NEW AS SELECT * FROM CLIENTINFO;
所以后面就直接写了...太粗心了!
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’! 由于char(1)所以会截取一个字符插入!
在mssql中可以用select into方式,会自动创建表结构和数据! oracle里面相对的是
create table tableb
as
(
select * from tablea
)
试试希望对你有帮助!
之前已经经过贴了,还是很谢谢你的!