- Defined Oracle date/time types

- Fix for recognition of Float-fields
- Implemented support for ftDateTime
- support for ftBCD fields is implemented in r4000
- a fix for the size of string-fields is implemented in r4000

git-svn-id: trunk@4008 -
This commit is contained in:
joost 2006-06-29 22:33:14 +00:00
parent 391dc9a9fb
commit 3d06331560
4 changed files with 39 additions and 14 deletions

View File

@ -346,7 +346,7 @@ begin
OFieldType := SQLT_INT; OFieldType := SQLT_INT;
OFieldSize:= sizeof(integer); OFieldSize:= sizeof(integer);
end end
else if (oscale = -127) and (OPrecision=0) then else if (oscale = -127) {and (OPrecision=0)} then
begin begin
FieldType := ftFloat; FieldType := ftFloat;
OFieldType := SQLT_FLT; OFieldType := SQLT_FLT;
@ -367,7 +367,10 @@ begin
OCI_TYPECODE_DATE : FieldType := ftDate; OCI_TYPECODE_DATE : FieldType := ftDate;
OCI_TYPECODE_TIMESTAMP, OCI_TYPECODE_TIMESTAMP,
OCI_TYPECODE_TIMESTAMP_LTZ, OCI_TYPECODE_TIMESTAMP_LTZ,
OCI_TYPECODE_TIMESTAMP_TZ : FieldType := ftDateTime; OCI_TYPECODE_TIMESTAMP_TZ : begin
FieldType := ftDateTime;
OFieldType := SQLT_ODT;
end;
else else
FieldType := ftUnknown; FieldType := ftUnknown;
end; end;
@ -412,9 +415,7 @@ var dt : TDateTime;
size,i : byte; size,i : byte;
exp : shortint; exp : shortint;
cur : Currency; cur : Currency;
ts : TTimeStamp; odt : POCIdateTime;
dattim : ^TDateTime;
begin begin
with cursor as TOracleCursor do if fieldbuffers[FieldDef.FieldNo-1].ind = -1 then with cursor as TOracleCursor do if fieldbuffers[FieldDef.FieldNo-1].ind = -1 then
@ -451,10 +452,8 @@ begin
move(dt,buffer^,sizeof(dt)); move(dt,buffer^,sizeof(dt));
end; end;
ftDateTime : begin ftDateTime : begin
dattim := fieldbuffers[FieldDef.FieldNo-1].buffer; odt := fieldbuffers[FieldDef.FieldNo-1].buffer;
dt := ComposeDateTime(EncodeDate(odt^.year,odt^.month,odt^.day), EncodeTime(odt^.hour,odt^.min,odt^.sec,0));
// dt := EncodeDate((b[0]-100)*100+(b[1]-100),b[2],b[3]);
// dt := ComposeDateTime(EncodeDate((b[0]-100)*100+(b[1]-100),b[2],b[3]), EncodeTime(b[4],b[5],b[6],0));
move(dt,buffer^,sizeof(dt)); move(dt,buffer^,sizeof(dt));
end; end;
else else

View File

@ -2912,7 +2912,7 @@ uses ctypes,
POCIParam = pointer; // OCI PARameter descriptor POCIParam = pointer; // OCI PARameter descriptor
POCIComplexObjectComp = pointer; // OCI COR descriptor POCIComplexObjectComp = pointer; // OCI COR descriptor
POCIROWID = pointer; // OCI ROWID descriptor POCIROWID = pointer; // OCI ROWID descriptor
POCIDateTime = pointer; // OCI DateTime descriptor // POCIDateTime = pointer; // OCI DateTime descriptor
POCIInterval = pointer; // OCI Interval descriptor POCIInterval = pointer; // OCI Interval descriptor
POCIUcb = pointer; // OCI User Callback descriptor POCIUcb = pointer; // OCI User Callback descriptor
POCIServerDNs = pointer; // OCI server DN descriptor POCIServerDNs = pointer; // OCI server DN descriptor

View File

@ -269,6 +269,32 @@ in define line 272 *)
// const // const
// MINSIZE_TMAXVAL:size_t = 4294967295; // MINSIZE_TMAXVAL:size_t = 4294967295;
type
POCITime = ^OCITime;
OCITime = packed record
OCITimeHH : ub1;
OCITimeMM : ub1;
OCITimeSS : ub1;
end;
POCIDate = ^OCIDate;
OCIDate = packed record
OCIDateYYYY : sb2;
OCIDateMM : ub1;
OCIDateDD : ub1;
OCIDateTime : OCITime;
end;
POCIDateTime = ^TOCIDate;
TOCIDate = packed record
Year : sb2;
Month : ub1;
Day : ub1;
Hour : ub1;
Min : ub1;
Sec : ub1;
end;
implementation implementation
function UB1MASK : longint; function UB1MASK : longint;

View File

@ -738,9 +738,9 @@
// OCI_TYPECODE_CFILE = SQLT_CFILE; // OCI_TYPECODE_CFILE = SQLT_CFILE;
{ the following are ANSI datetime datatypes added in 8.1 } { the following are ANSI datetime datatypes added in 8.1 }
{ SQL/OTS TIME } { SQL/OTS TIME }
// OCI_TYPECODE_TIME = SQLT_TIME; OCI_TYPECODE_TIME = SQLT_TIME;
{ SQL/OTS TIME_TZ } { SQL/OTS TIME_TZ }
// OCI_TYPECODE_TIME_TZ = SQLT_TIME_TZ; OCI_TYPECODE_TIME_TZ = SQLT_TIME_TZ;
{ SQL/OTS TIMESTAMP } { SQL/OTS TIMESTAMP }
OCI_TYPECODE_TIMESTAMP = SQLT_TIMESTAMP; OCI_TYPECODE_TIMESTAMP = SQLT_TIMESTAMP;
{ SQL/OTS TIMESTAMP_TZ } { SQL/OTS TIMESTAMP_TZ }
@ -748,9 +748,9 @@
{ TIMESTAMP_LTZ } { TIMESTAMP_LTZ }
OCI_TYPECODE_TIMESTAMP_LTZ = SQLT_TIMESTAMP_LTZ; OCI_TYPECODE_TIMESTAMP_LTZ = SQLT_TIMESTAMP_LTZ;
{ SQL/OTS INTRVL YR-MON } { SQL/OTS INTRVL YR-MON }
// OCI_TYPECODE_INTERVAL_YM = SQLT_INTERVAL_YM; OCI_TYPECODE_INTERVAL_YM = SQLT_INTERVAL_YM;
{ SQL/OTS INTRVL DAY-SEC } { SQL/OTS INTRVL DAY-SEC }
// OCI_TYPECODE_INTERVAL_DS = SQLT_INTERVAL_DS; OCI_TYPECODE_INTERVAL_DS = SQLT_INTERVAL_DS;
{ Urowid type } { Urowid type }
// OCI_TYPECODE_UROWID = SQLT_RDD; // OCI_TYPECODE_UROWID = SQLT_RDD;
{ first Open Type Manager typecode } { first Open Type Manager typecode }