Subject | Problem with where clause |
---|---|
Author | |
Post date | 2018-01-05T11:52:35Z |
Hi all,
I am using FB 3 and IBExpert and with the DDL below I get message <Invalid token dynamic SQL error SQL error code= -104 unexpected end of command> and it works when I remove the where clause. I think the problem is with the between command. Can you please help me ?
create or alter procedure test_commande (
from_date date,
to_date date)
returns (
commande_id integer,
ordre_id integer,
num_commande integer,
four_id integer,
date_commande date,
prefixe_num_commande varchar(6),
verrouiller smallint,
employe_id integer,
depot_livraison_id integer,
adresse_id integer,
utilisateur varchar(30),
last_update timestamp,
facture_id integer,
note varchar(1000),
nom_four varchar(150),
code_four integer,
prefixe_four varchar(6),
suffixe_four varchar(6),
num_facture varchar(20),
annee_facture integer,
employe_nom varchar(30),
employe_prenoms varchar(30),
total_ht numeric(15,2),
total_remise numeric(15,2),
total_ht_net numeric(15,2),
total_tva numeric(15,2),
total_ttc numeric(15,2),
type_adresse varchar(1),
intitule_adresse varchar(50),
adr_ligne1 varchar(50),
adr_ligne2 varchar(50),
adr_ligne3 varchar(50),
ville varchar(80),
code_postal varchar(6),
tel varchar(30),
fax varchar(30),
nom_wilaya varchar(100),
nom_pays varchar(80),
transformer_facture smallint,
transformer_livraison smallint,
motif_ordre varchar(50),
unite_id integer,
intitule_unite varchar(100),
code_unite varchar(3),
nom_projet varchar(200),
projet_id integer,
delai_livraison integer,
status_commande varchar(2),
intitule_depot_livraison varchar(50),
num_ordre integer,
prefixe_ordre varchar(2),
date_ordre date,
commande_annulee smallint,
annee_ordre integer)
as
declare variable v1 varchar(10000);
begin
V1= 'SELECT CF.COMMANDE_ID,CF.ORDRE_ID, CF.NUM_COMMANDE,CF.FOUR_ID, CF.DATE_COMMANDE, CF.PREFIXE,CF.VERROUILLER, CF.EMPLOYE_ID,CF.DEPOT_LIVRAISON_ID,';
V1=:V1 || 'CF.ADRESSE_ID,CF.UTILISATEUR, CF.LAST_UPDATE,CF.FACTURE_ID,CF.NOTE,FO.NOM_FOUR,FO.CODE_FOUR,FO.PREFIXE,FO.SUFFIXE,FF.NUM_FACTURE,FF.ANNEE,';
V1=:V1 || 'EM.EMPLOYE_NOM,EM.EMPLOYE_PRENOMS,CL.MONTANT_HT,CL.MONTANT_REMISE,CL.MONTANT_HT_NET,CL.MONTANT_TAXE,CL.MONTANT_NET,AD.TYPE_ADRESSE,AD.INTITULE_ADRESSE,AD.ADR_LIGNE1,';
V1=:V1 || 'AD.ADR_LIGNE2,AD.ADR_LIGNE3,AD.VILLE,AD.CODE_POSTAL,AD.TEL,AD.FAX,AD.NOM_WILAYA,AD.NOM_PAYS,CF.TRANSFORMER_FACTURE,CF.TRANSFORMER_LIVRAISON,OD.MOTIF_ORDRE,';
V1=:V1 || 'OD.UNITE_ID,U.INTITULE_UNITE,U.CODE_UNITE, P.NOM_PROJET,OD.PROJET_ID,CF.DELAI_LIVRAISON,CF.STATUS_COMMANDE,D.NOM_DEPOT,OD.NUM_ORDRE,';
V1=:V1 || 'OD.PREFIXE,OD.DATE_ORDRE,CF.COMMANDE_ANNULEE,OD.ANNEE_ORDRE';
V1=:V1 || ' FROM COMMANDE_FOURNISSEUR AS CF';
V1=:V1 || ' LEFT JOIN TOTAUX_COMMANDEFOUR_LIGNE(CF.COMMANDE_ID ) AS CL ON( 1 = 1 )';
V1=:V1 || ' LEFT JOIN FOURNISSEUR FO ON CF.FOUR_ID=FO.FOUR_ID';
V1=:V1 || ' LEFT JOIN ORDRE_ACHAT OD ON CF.ORDRE_ID=OD.ORDRE_ID';
V1=:V1 || ' LEFT JOIN FACTURE_FOURNISSEUR FF ON CF.FACTURE_ID=FF.FACTURE_ID';
V1=:V1 || ' LEFT JOIN EMPLOYE EM ON CF.EMPLOYE_ID=EM.EMPLOYE_ID';
V1=:V1 || ' LEFT JOIN VW_ADRESSE_TIERS AD ON CF.ADRESSE_ID=AD.ADRESSE_ID';
V1=:V1 || ' LEFT JOIN UNITE U ON CF.UNITE_ID=U.UNITE_ID';
V1=:V1 || ' LEFT JOIN PROJET P ON OD.PROJET_ID=P.PROJET_ID';
V1=:V1 || ' LEFT JOIN DEPOT D ON CF.DEPOT_LIVRAISON_ID=D.DEPOT_ID';
V1=:V1 || ' WHERE CF.DATE_COMMANDE'||' BETWEEN '||:FROM_DATE||' AND '||:TO_DATE;
FOR EXECUTE STATEMENT v1
INTO
:COMMANDE_ID,:ORDRE_ID,:NUM_COMMANDE,:FOUR_ID,:DATE_COMMANDE,:PREFIXE_NUM_COMMANDE,:VERROUILLER,:EMPLOYE_ID,:DEPOT_LIVRAISON_ID,
:ADRESSE_ID,:UTILISATEUR,:LAST_UPDATE,:FACTURE_ID,:NOTE,:NOM_FOUR,:CODE_FOUR,:PREFIXE_FOUR,:SUFFIXE_FOUR,:NUM_FACTURE,:ANNEE_FACTURE,
:EMPLOYE_NOM,:EMPLOYE_PRENOMS,:TOTAL_HT,:TOTAL_REMISE,:TOTAL_HT_NET,:TOTAL_TVA,:TOTAL_TTC,:TYPE_ADRESSE,:INTITULE_ADRESSE,:ADR_LIGNE1,
:ADR_LIGNE2,:ADR_LIGNE3,:VILLE,:CODE_POSTAL,:TEL,:FAX,:NOM_WILAYA,:NOM_PAYS, :TRANSFORMER_FACTURE,:TRANSFORMER_LIVRAISON,:MOTIF_ORDRE,
:UNITE_ID,:INTITULE_UNITE,:CODE_UNITE,:NOM_PROJET,:PROJET_ID,:DELAI_LIVRAISON,:STATUS_COMMANDE,:INTITULE_DEPOT_LIVRAISON,:NUM_ORDRE,
:PREFIXE_ORDRE,:DATE_ORDRE,:COMMANDE_ANNULEE,:ANNEE_ORDRE
DO
suspend;
end