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 :
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
` ---------- exemple ----------
TABLEAU DATE
(
results;
3
)
TABLEAU ENTIER LONG
(
$tNull
;
1
)
TABLEAU ENTIER LONG
(
$tTailles
;
1
)
TABLEAU ENTIER LONG
(
$tCodes
;
1
)
$tTailles
{1
}:=
255
$UserName
:=
"xxx"
$Password
:=
"xxx"
$OraServ
:=
"xxx"
$sql
:=
"SELECT date_fact FROM factures"
$Status
:=
OCIEnvCreate (
$DescrEnv
;
OCI_DEFAULT)
$Status
:=
OCIHandleAlloc (
$DescrEnv
;
$DescrErr
;
OCI_HTYPE_ERROR)
$Status
:=
OCIHandleAlloc (
$DescrEnv
;
$DescrService
;
OCI_HTYPE_SVCCTX)
$Status
:=
OCIHandleAlloc (
$DescrEnv
;
$DescrAuth
;
OCI_HTYPE_SESSION)
$Status
:=
OCIHandleAlloc (
$DescrEnv
;
$DescrServer
;
OCI_HTYPE_SERVER)
$Status
:=
OCIServerAttach (
$DescrServer
;
$DescrErr
;
$OraServ
)
$Status
:=
OCIAttrSetVal (
$DescrService
;
$DescrServer
;
OCI_ATTR_SERVER;
$DescrErr
)
$Status
:=
OCIAttrSetText (
$DescrAuth
;
$UserName
;
OCI_ATTR_USERNAME;
$DescrErr
)
$Status
:=
OCIAttrSetText (
$DescrAuth
;
$Password
;
OCI_ATTR_PASSWORD;
$DescrErr
)
$Status
:=
OCISessionBegin (
$DescrService
;
$DescrErr
;
$DescrAuth
;
OCI_CRED_RDBMS;
OCI_DEFAULT)
$Status
:=
OCIAttrSetVal (
$DescrService
;
$DescrAuth
;
OCI_ATTR_SESSION;
$DescrErr
)
$Status
:=
OCIHandleAlloc (
$DescrEnv
;
$DescrStmt
;
OCI_HTYPE_STMT)
$Status
:=
OCIStmtPrepare (
$DescrStmt
;
$DescrErr
;
$sql
;
Length(
$sql
))
`$sqlt:=SQLT_DATE
$sqlt
:=
SQLT_ODT
$Status
:=
OCIDefineByPos (
$DescrStmt
;
$DescrDefine
;
$DescrErr
;
1
;->
results;
$sqlt
;
->
$tNull
;->
$tTailles
;->
$tCodes
;
OCI_DEFAULT)
$Status
:=
OCIStmtExecute (
$DescrService
;
$DescrStmt
;
$DescrErr
;
0
;
0
;
0
;
0
;
OCI_DEFAULT)
$Status
:=
OCIStmtFetch (
$DescrStmt
;
$DescrErr
;
10
)
$text
:=
Chaine
(
results{1
})+
Caractere
(
13
)
Boucle
(
$i
;
2
;
Taille tableau
(
results))
$text
:=
$text
+
Chaine
(
results{$i
})+
Caractere
(
13
)
Fin de boucle
ALERTE
(
"TABLEAU DATE :"
+
Caractere
(
13
)+
$text
)
$Status
:=
OCISessionEnd (
$DescrService
;
$DescrErr
;
$DescrAuth
)
$Status
:=
OCIServerDetach (
$DescrServer
;
$DescrErr
)
$Status
:=
OCIHandleFree (
$DescrService
)
$Status
:=
OCIHandleFree (
$DescrServer
)
$Status
:=
OCIHandleFree (
$DescrErr
)
$Status
:=
OCIHandleFree (
$DescrEnv
)
TABLEAU DATE
(
results;
0
)
` ---------- fin exemple ----------
En complément, petit script SQL pour créer la table factures :
Sélectionnez
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
;