Ir para conteúdo

Arquivado

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

gilmarfp

inserir dados de uma tabela pra outra

Recommended Posts

Tenho a tabela CONTA_RECEBER que contem o campo VALOR , gostaria de saber como faço pra selecionar os dados do campo VALOR (que está marcando quanto o cliente deve) e inserir no campo LIMITE_CREDITO de outra tabela chamada CLIENTES.

 

seria algo mais ou menos assim vamos supor que esse cliente deva 2000,00 queria pegar esse valor através de sql firebird e adicionar no campo limite de crédito desse mesmo cliente, só que os dados estão em tabelas separadas no mesmo FDB será que é possivel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É possível criar um insert into e no lugar do value você coloca seu select que faz essa consulta.

 

Abraços...

 

poderia me dar um exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

INSERT INTO TABELA(LIMITE_CREDITO) VALUE (SELECT VALOR FROM TABELA2)

fiz assim INSERT INTO CLIENTES(LIMITE_CREDITO) VALUE (SELECT VALOR FROM CONTA_RECEBER)

 

e deu o seguinte erro:

 

Preparing query: INSERT INTO CLIENTES(LIMITE_CREDITO) VALUE (SELECT VALOR FROM CONTA_RECEBER)

Error: *** IBPP::SQLException ***

Context: Statement::Prepare( INSERT INTO CLIENTES(LIMITE_CREDITO) VALUE (SELECT VALOR FROM CONTA_RECEBER) )

Message: isc_dsql_prepare failed

 

SQL Message : -104

Invalid token

 

Engine Code : 335544569

Engine Message :

Dynamic SQL Error

SQL error code = -104

Token unknown - line 1, column 38

VALUE

 

 

Total execution time: 0.000s

 

obs. estou usando o program flamerobin pra testar as instruções

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao

woeiwoei

Eu te dei um exemplo em SQL

Nao manjo FireBird :S

 

Nao eh a msma coisa a Sintaxe ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não se pode fazer select dentro de um insert em firebird. Não estou certo.

 

Pq você não cria uma stored procedure?

Tipo assim:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_ATUALIZA_LIMITE_CLIENTE (
   ID_CLIENTE INTEGER) 
AS
DECLARE VARIABLE V_VALOR NUMERIC(15,2);
begin
 /*busca o valor*/
 SELECT
   VALOR
   FROM CONTAS_PAGAR
   WHERE ID_CLIENTE = :ID_CLIENTE
   INTO :V_VALOR;


 /*insere limite credito*/
 INSERT INTO CLIENTES (LIMITE_CREDITO)
               VALUES (:V_VALOR)
   WHERE ID_CLIENTE = :ID_CLIENTE;
end^

SET TERM ; ^

 

 

Depois você chama: EXECUTE PROCEDURE SP_ATUALIZA_LIMITE_CLIENTE(id_do_cliente).

 

Se não for numa procedure pode fazer um EXECUTE BLOCK se estiver usando Firebird 2.x

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para utilizar o select insert no Firebird/Interbase, você pode usar a seguinte sintaxe:

 

INSERT INTO COUNTRY_BACK(COUNTRY, CURRENCY)

SELECT COUNTRY, CURRENCY FROM COUNTRY

 

Lembrando que, o numero de colunas do select tem que ser igual ao do insert, e que sera inserido na ordem. A primeira coluna do select no primeiro campo do insert e assim por diante.

 

[]'s

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.