Conversao de valor dentro de Stored Procedure

Firebird

14/02/2004

Bom dia,
tenho a senguinte situação: preciso recuperar do banco um tipo DOUBLE e inserí-lo dentro de outra tabela com tipo VARCHAR, porém não consigo fazer a conversao [o que eu tentei e deu erro]: FOR SELECT EMPRESA, DATALANCAMENTO, DOCUMENTO, SEQUENCIAL, FORCLI, EMITENTE,
ALIQUOTAICMS, ULTIMAALTERACAODB
FROM LFENTRA2
WHERE (DATALANCAMENTO = ´22.01.2004´ OR DATALANCAMENTO = ´29.01.2004´ OR
DATALANCAMENTO = ´12.02.2004´ OR DATALANCAMENTO = ´13.02.2004´) AND
EMPRESA = ´010´
INTO :sEmpresa,:tDataEmissao,:sDocumento, :sSequencial, :sForcli, :sEmitente,
:dAliquota, :ultima

DO
BEGIN
[b:b98cb91cb7]:dAliquota = CAST ((dAliquota) AS NUMERIC (12,2));[/b:b98cb91cb7]
TID = GEN_ID(IBE$LOG_TABLES_GEN,1);
IF (:tDataEmissao = ´22.01.2004´ OR :tDataEmissao = ´29.01.2004´ OR :tDataEmissao = ´12.02.2004´ OR :tDataEmissao = ´13.02.2004´) THEN
BEGIN
INSERT INTO IBE$LOG_TABLES (ID, TABLE_NAME, OPERATION, DATE_TIME, USER_NAME)
VALUES (:TID, ´LFENTRA2´, ´I´, ´NOW´, USER);
END
ELSE
BEGIN
IF ((:ultima = ´22.01.2004´ OR :ultima = ´29.01.2004´ OR :ultima = ´12.02.2004´ OR :ultima = ´13.02.2004´) AND
:tDataEmissao<:ultima) THEN
BEGIN
INSERT INTO IBE$LOG_TABLES (ID, TABLE_NAME, OPERATION, DATE_TIME, USER_NAME)
VALUES (:TID, ´LFENTRA2´, ´U´, ´NOW´, USER);
END
END
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´EMPRESA´, :sEmpresa);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´DATALANCAMENTO´, :tDataEmissao);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´DOCUMENTO´, :sDocumento);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´SEQUENCIAL´, :sSequencial);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´FORCLI´, :sForcli);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´EMITENTE´, :sEmitente);
INSERT INTO IBE$LOG_KEYS (LOG_TABLES_ID, KEY_FIELD, KEY_VALUE)
VALUES (:TID, ´ALIQUOTAICMS´, :dAliquota);
END
/* FIM */


Skaarj

Skaarj

Curtidas 0

Respostas

Afarias

Afarias

14/02/2004

vc deve apenas fazer::

select cast(campo_double as varchar(10)) from tabela
into :campo_ou_variavel_varchar;

ou

variavel_varchar = cast(variavel_double as varchar(10));




T+


GOSTEI 0
Skaarj

Skaarj

14/02/2004

vlw cara..
apesar d no banco eu verificar depois que nao era isso q estava causando erro, ajudou pra caramba!! Afinal, nunca se sab qndo vou me deparar com essa situacao..

[o erro era q na variavel :sSequencial era um VARCHAR d 1, seguindo o padaro do banco, mas em uma tabela em especial precisava tr tamnho 2. Nem conversao precisava.. :oops: ]


GOSTEI 0
POSTAR