Preciso de uma força

05/12/2018

0

Galera, seguinte, eu tenho essa tabela e não estou conseguindo fazer o insert, diz que o valor é maior que a precisão especificada.

Alguém pode me ajudar?

Create Table TB_Veiculos
(
ID_Placa Varchar2(8),
DS_Renavam Varchar2(13) Constraint Vei_Renavam_nn Not Null,
DS_Marca Varchar2(40) Constraint Vei_Marca_nn Not Null,
DS_Modelo Varchar2(40) Constraint Vei_Modelo_nn Not Null,
ID_Combustivel Number(2) Constraint Vei_Combustivel_nn Not Null,
DS_Ano_Fabric Number(4) Constraint Vei_Ano_Fabr_nn Not Null,
DS_Ano_Modelo Number(4) Constraint Vei_Ano_Modelo_nn Not Null,
DS_Cor Varchar2(40) Constraint Vei_Cor_nn Not Null,
Constraint Veiculos_pk Primary Key (ID_Placa),
Constraint Vei_Comb_fk Foreign Key (ID_Combustivel) References TB_Combustivel(ID_Combustivel)
);


INSERT INTO TB_VEICULOS
VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',02);

*Obs, ele aponta que o erro está nos anos "2015"....
Julio Cesar

Julio Cesar

Responder

Post mais votado

05/12/2018

Quando você não indica quais campo está manipulando, o insert segue a ordem de criação dos campos, logo:
INSERT INTO TB_VEICULOS VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',02);
estará atribuindo:
ID_Placa		Varchar(8)	= 'AAA-AAAA'
DS_Renavam		Varchar(13)	= '0000000000001'
DS_Marca		Varchar(40)	= 'MERCEDES'
DS_Modelo		Varchar(40)	= 'AMG'
ID_Combustivel	Number(2)	= 2015
DS_Ano_Fabric	Number(4)	= 2015
DS_Ano_Modelo	Number(4)	= 'VERMELHO'
DS_Cor			Varchar(40)	= 2
Então aparentemente as atribuições estão erradas a partir do campo ID_Combustivel que comporta numeros de até 2 dígitos, mas você está passando 4 dígitos.

Para evitar problemas quanto à ordem dos campos, informe-os explicitamente no insert. Assim:
INSERT INTO TB_VEICULOS(ID_Placa, DS_Renavam, DS_Marca, DS_Modelo, DS_Ano_Fabric, DS_Ano_Modelo, DS_Cor, ID_Combustivel)
VALUES('AAA-AAAA', '0000000000001', 'MERCEDES', 'AMG', 2015, 2015, 'VERMELHO',2);
Desta forma o resultado será:
ID_Placa		Varchar(8)	= 'AAA-AAAA'
DS_Renavam		Varchar(13)	= '0000000000001'
DS_Marca		Varchar(40)	= 'MERCEDES'
DS_Modelo		Varchar(40)	= 'AMG'
DS_Ano_Fabric	Number(4)	= 2015
DS_Ano_Modelo	Number(4)	= 2015
DS_Cor			Varchar(40)	= 'VERMELHO'
ID_Combustivel	Number(2)	= 2

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

05/12/2018

Fernando Wahl

E ai Julio, pode ser duas coisas, ja acontece isso comigo:

1º - Sei que está usando tipo Number, mas mesmo assim, coloque no VALUES entre aspas "2015", creio que dessa forma de certo;
2º - Se vc aumentar o Number para 5, por ex:
--> DS_Ano_Fabric Number(5) Constraint Vei_Ano_Fabr_nn Not Null,
--> DS_Ano_Modelo Number(5) Constraint Vei_Ano_Modelo_nn Not Null,
e passar somente 4 números pode ser que de certo;

Ja passei por esses dois tipo s de problemas e os dois resolveram.

Outra coisa, se estiver usando o SQL server, da uma olhada como ele faz no quesito automático pelo próprio banco, geralmente o SQL Server mostra o código do Insert, dessa forma vc pode ver como que o próprio SQl Server está passando o comando.


Abraços até.
Responder

06/12/2018

Julio Cesar

Emerson, muuuuuuuuito obrigado.

Que baita falta de atenção da minha parte. É isso mesmo, da próxima vez que precisar inserir dados eu vou me atentar mais.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar