[firebase-br] Problema com Execute Statement com Insert

RedDevil reddevil_fdb em yahoo.com.br
Ter Maio 23 00:34:56 -03 2006


ola Andrei,

as ultimas linhas que voce escreveu, sobre o lance "legal" dessa historia,
me levaram a pensar em uma coisa...

trata-se apenas de um chute, pois faz dias que esta historia esta rolando
aqui... talvez o "execute statement" nao necessite do que eu estou pensando
(nao posso testar agora), mas tente fazer a tua string conforme estou
colocando ae abaixo (a minha sugestao esta em letras maiusculas):

wSQL1 ='Insert into teste (CAMPO_INTEGER, CAMPO_VARCHAR, CAMPO_DATE)
Values(0, ' || '''RF''' || ', current_date' || ')';


[]s
força sempre!!!
ate +++

--
Luiz "RedDevil" Stefanski - Linux User #399026
http://www.RedDevil.eti.br - Delphi 4 Powered by IBObjects
exemplos e dicas sobre o IBObjects:
http://www.RedDevil.eti.br/ibob.htm
usando o IBExpert no Linux:
http://www.firebase.com.br/fb/artigo.php?id=1366



----- Original Message -----
From: "Andrei Luís" <compuvale.software em gmail.com>
To: "Firebase" <lista em firebase.com.br>
Sent: Monday, May 22, 2006 11:52 PM
Subject: [firebase-br] Problema com Execute Statement com Insert


Continuo na minha via crucis pra fazer um insert via SP.

Bem, a ideia é fazer um select em uma tabela para recuperar uns
valores, entre eles diversas datas de vencimento e valores de faturas.

O último problema que estou tendo é não conseguir fazer o insert de
uma variável data em um campo data.

Tabela de teste:

CREATE GENERATOR GEN_TESTE_REGISTRO_ID;

CREATE TABLE TESTE (
    REGISTRO_ID  INTEGER,
    TESTE        VARCHAR(250),
    DATA         DATE
);

SET TERM ^ ;

CREATE TRIGGER TESTE_BI FOR TESTE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    NEW.REGISTRO_ID = GEN_ID(GEN_TESTE_REGISTRO_ID,1);
END
^

SET TERM ; ^


A SP de teste:

SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE
AS
DECLARE VARIABLE WSQL1 VARCHAR(100);
DECLARE VARIABLE WDATAVEN DATE;
begin
   wdataven = current_date;
   wSQL1 ='Insert into teste Values(0, ' || '''RF''' || ', ' || wdataven ||
')';
   execute statement wsql1;
end
^
SET TERM ; ^

Joguei current_date apenas para teste, a variável wdataven será
preenchida com uma data recuperada em um select.

Ao executar, dá erro :
Overflow occurred during data type conversion.
conversion error from string "1979".

Se troco o sql dessa forma:
wSQL1 ='Insert into teste Values(0, ' || '''RF''' || ', wdataven' || ')';

Ao executar dá erro de column unknow wDataven

Se faço assim dá certo, mas não é current_date que preciso armazenar...
wSQL1 ='Insert into teste Values(0, ' || '''RF''' || ', current_date' ||
')';

Já tentei fazer cast( wdataven as Date) na linha onde monto o SQL e
cast(current_date as Date) na linha onde atribuo o valor à variável, e
o resultado é o mesmo.

O mais "legal": se tiro o '''RF''' e coloco wdataven no lugar,
funciona!!! Grava o mesmo 1979 que aparece em um dos erros acima.

Onde estou errando? Porque não grava uma variável data em um campo
data, e grava uma variável data em um campo varchar???

[]s
Andrei



		
_______________________________________________________ 
Navegue com o Yahoo! Acesso Grátis, assista aos jogos do Brasil na Copa e ganhe prêmios de hora em hora! 
http://br.yahoo.com/artilheirodacopa/





Mais detalhes sobre a lista de discussão lista