Subject Problem with where clause
Author

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