Isto só é possível com a criação externa de tabelas.
CREATE TABLE PAGAMENTOIMPORTACAO EXTERNAL ‘/home/sistemas/teste/Importa’ (
EMPRESA CHAR(3) CHARACTER SET NONE,
FILIAL CHAR(2) CHARACTER SET NONE,
DEPARTAMENTO CHAR(3) CHARACTER SET NONE,
SETOR CHAR(3) CHARACTER SET NONE,
FILREG CHAR(2) CHARACTER SET NONE,
FICHAREG CHAR(6) CHARACTER SET NONE,
CODIGO CHAR(3) CHARACTER SET NONE,
NUMHORAS CHAR(5) CHARACTER SET NONE,
VALHORAS CHAR(7) CHARACTER SET NONE,
BASE CHAR(12) CHARACTER SET NONE,
VALOR CHAR(12) CHARACTER SET NONE,
CTRL CHAR(2) CHARACTER SET NONE
);
o caminho REAL do SERVIDOR onde ficará o arquivo é “/home/sistemas/teste/Importa”,
no final é obrigatório a utilização do “CTRL CHAR(2) CHARACTER SET NONE”, que indica a mudança de linha.
criei uma outra stored procedure que lê tudo o que está nessa tabela e insere na minha tabela real, realizando as conversões.
CREATE PROCEDURE SP_PAGIMPORTACAO_CONVERSAO (
IPDATA DATE)
AS
DECLARE VARIABLE VEMPRESA CHAR(3);
DECLARE VARIABLE VFILIAL CHAR(2);
DECLARE VARIABLE VDEPARTAMENTO CHAR(3);
DECLARE VARIABLE VSETOR CHAR(3);
DECLARE VARIABLE VFILREG CHAR(2);
DECLARE VARIABLE VFICHAREG CHAR(6);
DECLARE VARIABLE VCODIGO CHAR(3);
DECLARE VARIABLE VNUMHORAS CHAR(5);
DECLARE VARIABLE VVALHORAS CHAR(7);
DECLARE VARIABLE VBASE CHAR(12);
DECLARE VARIABLE VVALOR CHAR(12);
DECLARE VARIABLE VMES VARCHAR(3);
DECLARE VARIABLE VSTRINGSQL VARCHAR(100);
DECLARE VARIABLE OPEMPRESA INTEGER;
DECLARE VARIABLE OPFILIAL INTEGER;
DECLARE VARIABLE OPDEPARTAMENTO INTEGER;
DECLARE VARIABLE OPSETOR INTEGER;
DECLARE VARIABLE OPFILREG INTEGER;
DECLARE VARIABLE OPFICHAREG INTEGER;
DECLARE VARIABLE OPCODIGO INTEGER;
DECLARE VARIABLE OPNUMHORAS NUMERIC(3,2);
DECLARE VARIABLE OPVALHORAS NUMERIC(5,2);
DECLARE VARIABLE OPBASE NUMERIC(10,2);
DECLARE VARIABLE OPVALOR NUMERIC(10,2);
begin
FOR
SELECT EMPRESA, FILIAL, DEPARTAMENTO, SETOR, FILREG, FICHAREG, CODIGO, NUMHORAS, VALHORAS, BASE, VALOR
FROM PAGAMENTOIMPORTACAO
INTO :VEMPRESA, :VFILIAL, :VDEPARTAMENTO, :VSETOR, :VFILREG, :VFICHAREG, :VCODIGO, :VNUMHORAS, :VVALHORAS, :VBASE, :VVALOR
DO
BEGIN
OPEMPRESA = CAST(:VEMPRESA AS INTEGER);
OPFILIAL = CAST(:VFILIAL AS INTEGER);
OPDEPARTAMENTO = CAST(:VDEPARTAMENTO AS INTEGER);
OPSETOR = CAST(:VSETOR AS INTEGER);
OPFILREG = CAST(:VFILREG AS INTEGER);
OPFICHAREG = CAST(:VFICHAREG AS INTEGER);
OPCODIGO = CAST(:VCODIGO AS INTEGER);
OPNUMHORAS = CAST(SUBSTR(:VNUMHORAS,1,3) || + ‘.’ || + SUBSTR(:VNUMHORAS,4,6) AS NUMERIC (3,2));
OPVALHORAS = CAST(SUBSTR(:VVALHORAS,1,5) || + ‘.’ || + SUBSTR(:VVALHORAS,6,8) AS NUMERIC (5,2));
OPBASE = CAST(SUBSTR(:VBASE,1,10) || + ‘.’ || + SUBSTR(:VBASE,11,12) AS NUMERIC (10,2));
OPVALOR = CAST(SUBSTR(:VVALOR,1,10) || + ‘.’ || + SUBSTR(:VVALOR,11,12) AS NUMERIC (10,2));
INSERT INTO PAGAMENTO (EMPRESA, FILIAL, DEPARTAMENTO, SETOR, FILREG, FICHAREG, CODIGO, NUMHORAS, VALHORAS, BASE, VALOR, DATA)
VALUES (:OPEMPRESA, :OPFILIAL, :OPDEPARTAMENTO, :OPSETOR, :OPFILREG, :OPFICHAREG, :OPCODIGO, :OPNUMHORAS, :OPVALHORAS, :OPBASE, :OPVALOR, :IPDATA);
END
end
