Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

celsotsf

Procedure usando dblink com erro ORA-00947

Recommended Posts

Boa tarde,

Eu criei uma procedure para popular uma tabela em outro banco de dados usando database link.

Se eu fizer um insert simples com os valores declarados funcionam, as consultas também funcionam mas quando tentei usar a procedure me apresentou um erro

ORA-00947: não há valores suficientes.

Mesmo que eu faça com um unico campo varchar apresenta o mesmo erro.

Se puderem me ajudar serei muito grato segue a procedure.

CREATE OR REPLACE PROCEDURE teste_followup

BEGIN
  FOR R IN (
    select dt_criacao_pedido,
nm_proprietario_estoque,
nr_pedido,
nr_nf,
nm_cliente
from ztbl_expedicao
where tp_status = '95'
)
LOOP
INSERT INTO "tbl_int_expedicao"@mysql VALUES (
R.dt_cadastro,
R.nm_cliente,
R.nm_web,
R.nm_nf,
R.nm_destino);
END LOOP;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro ORA-00947: não há valores suficientes indica que a tabela tem mais colunas que a nomeada no isert

1) faça um insert nomeado

insert into tabela (coluna1,coluna2,coluna3) values (1,'abc',2);

2) faça o insert com o mesmo número e tipos de colunas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consigo inserir com esse codigo.

INSERT INTO "tbl_int_expedicao"@mysql
(
"dt_cadastro",
"nm_cliente",
"nm_web",
"nm_nf",
"nm_destino"
)
VALUES
(
'2016-08-01 09:41:59',
'SYLINK',
'000000025379',
'',
'226870550001'
);

commit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sintaxe do post #3 você insere para as colunas nomeadas ("dt_cadastro","nm_cliente","nm_web","nm_nf","nm_destino") , se houverem outras elas não são afetadas , a não ser que exista alguma que não admita nulos , se houver seu insert dará erro.

Na sintaxe do post #1 se estera que o SELECT tenha TODAS as colunas da tabela

Solução como dito no post #2

1) faça um insert nomeado

INSERT INTO table
(column1, column2, ... column_n )
SELECT expression1, expression2, ... expression_n
FROM source_table
[WHERE conditions]

2) faça o insert com o mesmo número e tipos de colunas

vide http://www.techonthenet.com/oracle/insert.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.