Bonjour,
Je travaille actuellement dans un environnement Sybase 12.0/Unix. Un script importe quotidiennement des données via un bcp.
Je rencontre un pb avec des fichiers d'import qui contiennent des données complètement farfelues.
Précisement :
Colonne source : DATE_VL -> CHAR (10)
Colonne destination (en base) : DATE_VALO -> SMALLDATETIME
Exemple de données erronnées qui font planter les proc liées :
DATE_VL : "2007/17/07 5:35 PM"
Je devrais avoir à la place :
DATE_VALO : "17/07/2007 17:35"
La conversion renvoie une erreur et oblige la procédure à sortir en erreur.
Je recherche un moyen d'annuler la connversion si celle-ci revient en erreur.
Je pensais faire quelque chose du genre :
--------------------------------------------------------------------
DECLARE @DATE_VL CHAR (10)
DECLARE @DATE_VALO SMALLDATETIME
DECLARE @MESSAGE VARCHAR (128)
SELECT @DATE_VALO = (CONVERT (@DATE_VL,SMALLDATETIME))
SELECT @@ERROR
IF @@ERROR <> 0
BEGIN
SELECT@MESSAGE = "DONNEE INCORRECTE"
ROLLBACK TRAN
RETURN
END
ELSE
BEGIN
SELECT @MESSAGE =" DONNEE OK"
END
SELECT @MESSAGE
COMMIT TRAN
------------------------------------------------------------------------
Le pb est que l'erreur dans la conversion empêche la suite de l'exécution de la requête. De ce fait, la condition IF ne fonctionne que quand il n'y a pas d'erreur.
Pouvez-vous m'aider à trouver une parade ?
Par avance, je vous remercie.
Partager