Hola amigos.
Estoy trabajando con FB 2.0 y Delphi6
Estoy tratando de crear, desde un procedimiento almacenado, un archivo de texto con una cantidad de registros que no han sido encontrados en una consulta. Este archivo de texto deberá contener todos los registros que no fueron encontrados en la consulta SQL...
Se puede generar un archivo de texto con estos registros?
Como se hace? (Ejemplos)
He encontrado esto:
https://firebird21.wordpress.com/tag/archivo-de-texto/
https://www.google.com/search?q=crea...t=gws-wiz-serp
Pero sin éxito, he hecho lo del primer link, pero creo que mi FB 2.0 no lo soporta, al momento de compilar el SP marca este error:
Cita:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 14, column 5.
CREATE.
|
Este es el STORE PROCEDURE que trato de crear:
Código SQL
[-]CREATE PROCEDURE SP_VALIDAR_COMBINACION (
I_MES INTEGER,
I_ANIO INTEGER)
AS
DECLARE VARIABLE V_RUTA INTEGER;
DECLARE VARIABLE V_FECHA_VISITA DATE;
DECLARE VARIABLE V_CONSEC_MAX INTEGER;
DECLARE VARIABLE V_CONSEC INTEGER;
DECLARE VARIABLE V_LEC_SEDE NUMERIC(10,0);
DECLARE VARIABLE V_LECHERIA NUMERIC(10,0);
DECLARE VARIABLE V_DATO NUMERIC(1,0);
DECLARE VARIABLE V_LECHERIA2 NUMERIC(10,0);
begin
CREATE TABLE ERR_COMBINACIONES EXTERNAL 'C:\ATENCION\ERR_COMBINACION.TXT' (
ERR_LEC_ORIGEN CHAR(10),
ERR_LEC_DESTINO CHAR(10)
ERR_RUTA CHAR(3)
ERR_FECHA_VISITA CHAR(10));
FOR SELECT DISTINCT(a.clave_ruta),
a.fecha_visita,
MAX( a.consec )
FROM atencion_lecheria a
WHERE a.clave_ruta in (SELECT DISTINCT(A.clave_ruta)
FROM atencion_lecheria A
WHERE A.mes_periodo=:i_MES
AND A.anio_periodo=:i_ANIO)
AND a.mes_periodo=:i_mes
AND a.anio_periodo=:i_anio
GROUP BY a.clave_ruta,
a.fecha_visita
INTO :v_ruta, :v_fecha_visita, :v_consec_max DO
BEGIN
v_consec=1;
While ( v_consec <= v_consec_max ) do
begin
select b.clave_lec
from atencion_lecheria b
where b.fecha_visita=:v_fecha_visita
and b.clave_ruta=:v_ruta
and b.consec=:v_consec
into :v_lecheria;
if (v_consec=1) then
begin
select r.clave_lec_sede
from ruta r
where r.clave_ruta=:v_ruta
into :v_lec_sede;
select 1
from lecheria_a_lecheria c
where c.clave_lec_origen=:v_lec_sede
and c.clave_lec_destino=:v_lecheria
into :v_dato;
if (v_dato is null) then
begin
select 1
from lecheria_a_lecheria c
where c.clave_lec_origen=:v_lecheria
and c.clave_lec_destino=:v_lec_sede
into :v_dato;
if (v_dato is null) then
begin
INSERT INTO ERR_COMBINACIONES (ERR_LEC_ORIGEN,
ERR_LEC_DESTINO,
ERR_RUTA,
ERR_FECHA_VISITA)
values (:v_lecheria,
:v_lec_sede,
:v_ruta,
:v_fecha_visita);
end
end
v_lecheria2=v_lecheria;
end Else
begin
select 1
from lecheria_a_lecheria c
where c.clave_lec_origen=:v_lecheria2
and c.clave_lec_destino=:v_lecheria
into :v_dato;
if (v_dato is null) then
begin
select 1
from lecheria_a_lecheria c
where c.clave_lec_origen=:v_lecheria
and c.clave_lec_destino=:v_lecheria2
into :v_dato;
if (v_dato is null) then
begin
INSERT INTO ERR_COMBINACIONES (ERR_LEC_ORIGEN,
ERR_LEC_DESTINO,
ERR_RUTA,
ERR_FECHA_VISITA)
values (:v_lecheria,
:v_lec_sede,
:v_ruta,
:v_fecha_visita);
end
end
v_lecheria2=:v_lecheria;
end;
v_consec:=:v_consec+1;
end
END
end
O puedo crear una tabla con los campos para almacenar los registros con error y luego crear el archivo texto desde DELPHI....pero quisiera agotar la opción de crearlo desde el STORE PROCEDURE.
Gracias por su tiempo.