Bonjour,

J'ai un problème avec une fonction qui transforme une date au format AAAAMMJJ en un format DATE (sql)

En qq lignes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
str = "SELECT CAST ( NULL AS DATE ) as test1, swviews.dectodate(0) AS test2 from sysibm.sysdummy1"
 
Set ors = New ADODB.Recordset
Call ors.open(str, moCnc, adOpenDynamic, adLockBatchOptimistic)
 
ors("test1") -> Null
ors("test2") -> Null
--> Ok la date 0 devient NULL

Par contre!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
str = "SELECT CAST ( NULL AS DATE ) as test1, swviews.dectodate(0) AS test2 from missdta.rlx000F"
 
Set ors = New ADODB.Recordset
Call ors.open(str, moCnc, adOpenDynamic, adLockBatchOptimistic)
 
ors("test1") -> plantage
ors("test2") -> plantage
"Une opération OLE-DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponible. Aucun travail n'a été effectué."



Avis au experts... hum.


Pour info, le code sql de la fonction DECTODATE:



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE FUNCTION SWVIEWS.DECTODATE ( 
 ARG DECIMAL(8, 0) ) 
 RETURNS DATE   
 LANGUAGE SQL 
 SPECIFIC SWVIEWS.DECTODATE 
 DETERMINISTIC 
 BEGIN 
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
     RETURN CAST ( NULL AS DATE ) ; 
 
    IF ARG = 0 THEN 
     RETURN CAST ( NULL AS DATE ) ; 
    ELSE 
     RETURN DATE ( SUBSTR ( DIGITS ( ARG ) , 1 , 4 ) || '-' || SUBSTR ( DIGITS ( ARG ) , 5 , 2 ) || '-' || SUBSTR ( DIGITS ( ARG ) , 7 , 2 ) ) ; 
    END IF ; 
    END  ;