domingo, 19 de fevereiro de 2012

PL/SQL: ORA-00947: not enough values


Hoje um cliente solicitou apoio para identificar o que estava gerando erro na criação de sua procedure e a deixando inválida na base de dados, pois bem, para identificarmos o que estava acontecendo bastou uma simples verificação:

SQL> show error procedure teste
Errors for PROCEDURE TESTE:
 
LINE/COL ERROR
-------- -----------------------------------------------------------------
60/12    PL/SQL: SQL Statement ignored
60/24    PL/SQL: ORA-00947: not enough values
97/12    PL/SQL: SQL Statement ignored
97/24    PL/SQL: ORA-00947: not enough values

Maravilha, identificamos que o erro é “PL/SQL: ORA-00947: not enough values” mas o que isto quer dizer?

Significa que “Não há valores suficientes”, ou seja, no INSERT está sendo passado uma quantidade inferior de valores do que é necessário ou foi especificado na instrução DML.

Vejamos:

SQL> insert into academico (codigo, nome, telefone) values (1,'ANDERSON');
insert into academico (codigo, nome, telefone) values (1,'ANDERSON')
                                               *
ERROR at line 1:
ORA-00947: not enough values

Neste exemplo podemos verificar que foi especificado 3 colunas porém apenas 2 valores foram passados no values, o mesmo erro também ocorre com instruções INSERT SELECT conforme abaixo:

SQL> insert into academico (codigo, nome, telefone) select codigo, nome from academico_tmp;
insert into academico (codigo, nome, telefone) select codigo, nome from academico_tmp
            *
ERROR at line 1:
ORA-00947: not enough values

Para resolvermos este ERRO basta especificarmos a quantidade correta de valores ou eliminar a coluna desnecessária.

SQL> insert into academico (codigo, nome, telefone) values (1,'ANDERSON',99811456);
 
1 row created.

Ou

SQL> insert into academico (codigo, nome) select codigo, nome from academico_tmp;
 
1 row created.
Postagem mais recente Postagem mais antiga Página inicial

0 comentários:

Postar um comentário

Translate

# Suporte

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares