Erro na realização do insert

SQL

Oracle PL SQL

02/01/2020

Bom dia!

Estou com problemas para realizar o insert numa tabela chamada contas, entretanto eu tenho relacionamento com a tabela empresa.

Na tabela empresa eu tenho o seguintes campos:

Id_empresa Nome_Empresa Inscricao_Estadual.

255 AMG Ltda 08522255

Já na tabela de contas eu possuo o seguintes campos:

Id_contas Id_Empresa Valor Inscricao_Estadual Ano_Mes Ano_Mes_Conta ICMS TOTAL_RECOLHIDO

Porém para realizar o insert eu tenho que verificar se a inscrição estadual que estou inserido existe na tabela de empresa, se existir eu insiro, caso não existe retorna o erro de inserção. Eu não sei se existe a possibilidade de fazer no select as que não existir não inserir e no final mostrar essas inscrições estadual que não tenha vinculo com nenhuma empresa no banco de dados. Como poderia ser tratado o erro que estou recebendo e essa validação?

INSERT INTO Contas(
id_Conta,
id_empresa,
valor,
inscricao_estadual,
ano_mes,
ano_mes_Conta,
icms,
total_recolhido)
VALUES(
365545,
''''25.300,38'''',
''''08522255'''',
(SELECT emp.id_empresa FROM EMPRESA emp where emp.Inscricao_Estadual = ''''08522255''''),
''''199810'''',
''''199910'''',
''''38.011,71'''',
''''38.011,71'''');
Retorna o seguinte erro:

Relatório de erros -
ORA-01722: número inválido
Se alguém puder me ajudar, fico agradecido.
Robson

Robson

Curtidas 0

Respostas

Anderson Gonçalves

Anderson Gonçalves

02/01/2020

Fala boy,

Seguinte...

Faz uma consulta antes de fazer o insert

With ADOQuery1 do
begin
close;
sql.clear;
sql.add('Select InscricaoEstadual from Tabela');
sql.add('where InscricaoEstadual = :Inscricao');
parameters.parambyname('inscricao').value := Edti1.text; // O componente que contém a informação a ser checada
open;
if ADOQuery1.Recordcount = 0 then // Checando se ele encontrou algum registro com esse numero (Se = 0 não encontrou);
begin
ShowMessage('Nenhum registro encontrado com esse número');
exit;
end
else
begin
// Aqui você coloca o comando insert em outra query claro... porque ele encontrou a inscrição estadual informada.
end;
end;

espero ter ajudado.
GOSTEI 0
Mauricio Espido

Mauricio Espido

02/01/2020

Cheque os tipos de campos da tabela que você está tentando fazer o insert antes de executar. Geralmente pode ser limitação de caractere ou alguma letra onde deve ser somente número.
GOSTEI 0
POSTAR