4D for OCI et les colonnes de type date

Stéphanie Tirtiat

- Titre : 4D for OCI et les colonnes de type date

- Auteur : Stéphanie Tirtiat

- Parution : 23 mai 2005

- Licence : Copyright ® 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

Produit : 4D OCI 2004 · Plateforme : Mac & Win ♪

Si vous avez des difficultés à retourner les valeurs des colonnes Oracle de type date avec 4D for OCI, utilisez SQLT_ODT au lieu de SQLT_DATE :

1. ` ---------- exemple ----------

3. TABLEAU DATE(results;3)

4. TABLEAU ENTIER LONG($tNull;1)

5. TABLEAU ENTIER LONG($tTailles;1)

6. TABLEAU ENTIER LONG($tCodes;1)

8. $tTailles{1}:=255

10. $UserName:="xxx"

11. $Password:="xxx"

12. $OraServ:="xxx"

14. $sql:="SELECT date_fact FROM factures"

16. $Status:=OCIEnvCreate ($DescrEnv;OCI_DEFAULT)

17. $Status:=OCIHandleAlloc ($DescrEnv;$DescrErr;OCI_HTYPE_ERROR)

18. $Status:=OCIHandleAlloc ($DescrEnv;$DescrService;OCI_HTYPE_SVCCTX)

19. $Status:=OCIHandleAlloc ($DescrEnv;$DescrAuth;OCI_HTYPE_SESSION)

20. $Status:=OCIHandleAlloc ($DescrEnv;$DescrServer;OCI_HTYPE_SERVER)

22. $Status:=OCIServerAttach ($DescrServer;$DescrErr;$OraServ)

23. $Status:=OCIAttrSetVal ($DescrService;$DescrServer;OCI_ATTR_SERVER;$DescrErr)

24. $Status:=OCIAttrSetText ($DescrAuth;$UserName;OCI_ATTR_USERNAME;$DescrErr)

25. $Status:=OCIAttrSetText ($DescrAuth;$Password;OCI_ATTR_PASSWORD;$DescrErr)

26. $Status:=OCISessionBegin ($DescrService;$DescrErr;$DescrAuth;OCI_CRED_RDBMS;OCI_DEFAULT)

27. $Status:=OCIAttrSetVal ($DescrService;$DescrAuth;OCI_ATTR_SESSION;$DescrErr)

29. $Status:=OCIHandleAlloc ($DescrEnv;$DescrStmt;OCI_HTYPE_STMT)

30. $Status:=OCIStmtPrepare ($DescrStmt;$DescrErr;$sql;Length($sql))

32. `$sqlt:=SQLT_DATE

33. $sqlt:=SQLT_ODT

34. $Status:=OCIDefineByPos ($DescrStmt;$DescrDefine;$DescrErr;1;->results;$sqlt;

35. ->$tNull;->$tTailles;->$tCodes;OCI_DEFAULT)

37. $Status:=OCIStmtExecute ($DescrService;$DescrStmt;$DescrErr;0;0;0;0;OCI_DEFAULT)

39. $Status:=OCIStmtFetch ($DescrStmt;$DescrErr;10)

41. $text:=Chaine(results{1})+Caractere(13)

42. Boucle ($i;2;Taille tableau(results))

43. $text:=$text+Chaine(results{$i})+Caractere(13)

44. Fin de boucle

46. ALERTE("TABLEAU DATE :"+Caractere(13)+$text)

48. $Status:=OCISessionEnd ($DescrService;$DescrErr;$DescrAuth)

49. $Status:=OCIServerDetach ($DescrServer;$DescrErr)

50. $Status:=OCIHandleFree ($DescrService)

51. $Status:=OCIHandleFree ($DescrServer)

52. $Status:=OCIHandleFree ($DescrErr)

53. $Status:=OCIHandleFree ($DescrEnv)

55. TABLEAU DATE(results;0)

57. ` ---------- fin exemple ----------

En complément, petit script SQL pour créer la table factures :

drop table factures;
create table factures (ID_fact varchar(3), date_fact date);
insert into factures (ID_fact,date_fact) values ('F01','10/05/2005');
insert into factures (ID_fact,date_fact) values ('F02','11/05/2005');
insert into factures (ID_fact,date_fact) values ('F03','12/05/2005');
select * from factures;
commit;