Bonjour,
Quelqu'un pourrait-il essayer le script suivant dans un requêteur comme IBOConsole, IBexpert, IBEasy+... un requêteur capable de modifier la structure de la base (pas uniquement les données comme le BOA).COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
CREATE PROCEDURE "PROC_ETAT_EVENEMENTS_SANS_TRI"
(
"I_DOSSIER" INTEGER
)
RETURNS
(
"DATE_EVE" VARCHAR(100) CHARACTER SET ISO8859_1,
"CP" VARCHAR(10) CHARACTER SET ISO8859_1,
"VILLE" VARCHAR(50) CHARACTER SET ISO8859_1,
"S_TYPE" VARCHAR(5) CHARACTER SET ISO8859_1,
"NOM" VARCHAR(40) CHARACTER SET ISO8859_1,
"PRENOM" VARCHAR(60) CHARACTER SET ISO8859_1,
"NOM_COMPLET" VARCHAR(160) CHARACTER SET ISO8859_1,
"SEXE" INTEGER,
"DATE_YEAR" INTEGER,
"DATE_MOIS" INTEGER,
"DATE_DATE" DATE
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "PROC_ETAT_EVENEMENTS_SANS_TRI"
(
"I_DOSSIER" INTEGER
)
RETURNS
(
"DATE_EVE" VARCHAR(100) CHARACTER SET ISO8859_1,
"CP" VARCHAR(10) CHARACTER SET ISO8859_1,
"VILLE" VARCHAR(50) CHARACTER SET ISO8859_1,
"S_TYPE" VARCHAR(5) CHARACTER SET ISO8859_1,
"NOM" VARCHAR(40) CHARACTER SET ISO8859_1,
"PRENOM" VARCHAR(60) CHARACTER SET ISO8859_1,
"NOM_COMPLET" VARCHAR(160) CHARACTER SET ISO8859_1,
"SEXE" INTEGER,
"DATE_YEAR" INTEGER,
"DATE_MOIS" INTEGER,
"DATE_DATE" DATE
)
AS
begin
/*---------------------------------------------------------------------------
Copyright Philippe Cazaux-Moutou. Tout droits réservés.
Créé le : 31/07/2001
à : 19:07:26
Modifiée le :23/08/2006 par André: ajout des ev_fam
à : :
par :
Description : Cette procedure permet de récuperer tous les evements
d'un dossier
Usage :
---------------------------------------------------------------------------*/
FOR SELECT e.ev_ind_date_writen,
e.EV_IND_CP,
e.EV_IND_VILLE,
e.EV_IND_TYPE,
i.NOM,
i.PRENOM,
EVE.REF_EVE_LIB_LONG || ' : de ' || i.NOM || ', ' || i.PRENOM,
i.sexe,
e.ev_ind_date_year,
e.ev_ind_date_mois,
e.ev_ind_date
FROM EVENEMENTS_IND e
inner join INDIVIDU i on i.cle_fiche=e.EV_IND_KLE_FICHE
inner join REF_EVENEMENTS EVE on EVE.REF_EVE_LIB_COURT=e.EV_IND_TYPE
WHERE i.KLE_DOSSIER = :I_DOSSIER
UNION
SELECT e.ev_fam_date_writen,
e.EV_FAM_CP,
e.EV_FAM_VILLE,
e.EV_FAM_TYPE,
'',
'',
SUBSTRING(EVE.REF_EVE_LIB_LONG||' : de '||m.NOM||', '||m.PRENOM
||' avec '||f.NOM||', '||f.PRENOM from 1 for 160),
0,
e.ev_fam_date_year,
e.ev_fam_date_mois,
e.ev_fam_date
FROM EVENEMENTS_FAM e
inner join REF_EVENEMENTS EVE on EVE.REF_EVE_LIB_COURT=e.EV_FAM_TYPE
inner join T_UNION u on u.UNION_CLEF=e.EV_FAM_KLE_FAMILLE
inner join INDIVIDU m on m.cle_fiche=u.UNION_MARI
inner join INDIVIDU f on f.cle_fiche=u.UNION_FEMME
WHERE m.KLE_DOSSIER = :I_DOSSIER
INTO :DATE_EVE,
:CP,
:VILLE,
:S_TYPE,
:NOM,
:PRENOM,
:NOM_COMPLET ,
:SEXE,
:DATE_YEAR,
:DATE_MOIS,
:DATE_DATE
do
suspend;
end ^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
Il s'agit d'une procédure qui permettrait d'ajouter les évènements familiaux à la liste des évènements.
Chez moi, ce script ne pose aucun problème sur les bases sur mon serveur linux avec Firebird 2.0.
Par contre sous FB1.5.3, la deuxième partie de la procédure (UNION SELECT e.ev_fam_date_writen,...) bloque avec le message "datatype inconnu" et je n'en vois pas la raison.
La fonction SUBSTRING n'est pas en cause, il y a l'erreur sans et elle existe depuis FB 1.0.
Aucune erreur de syntaxe n'est signalée.
Même blocage avec FB embedded ou avec ISQL.EXE(donc avec la procédure de maj de la base).
Si quelqu'un peut essayer sous diverses configurations de FB? ou a une idée de l'origine du problème.
Pour faire plusieurs essais sur la même base, il faut supprimer la partie CREATE après la première fois.
Pour ensuite supprimer la procédure créée: DROP PROCEDURE PROC_ETAT_EVENEMENTS_SANS_TRI;
Doit-on en conclure qu'il y a un bug dans FB1.5.3?
A+
André