Yes, I have patched DBD::Oracle 1.23 and it's working!  Thanks a bunch!

It was only changing the 0 to a 6, right?

The reason I was trying to patch it another way was because I don't have root 
on the machine in question.

John

-----Original Message-----
From: John Scoles [mailto:sco...@pythian.com] 
Sent: Thursday, February 04, 2010 11:24 AM
To: Carlson, John W.
Cc: John Scoles; dbi-users@perl.org
Subject: Re: selecting millisecond or microsecond accuracy from varray of 
timestamps

that should be fix with the small patch I provied the other days
or you can get the latest Trunk version of DBD oracle

at

http://*svn.perl.org/modules/dbd-oracle/trunk

anyway you look at it you will have to recompile you DBD::Oracle as it 
stands <1.24 will never be able to use any of the extra digits on a 
timestanmp they are simply not returned by the object handler.

cheers
John Scoles

Carlson, John W. wrote:
> Would this help?  Note the precision on the timestamp.
>
>
> CREATE OR REPLACE TYPE ARCHIVE.VOLTAGE_TIMESTAMP_ARRAY AS VARRAY(200) OF 
> TIMESTAMP(6);
>
> From: John Scoles [mailto:byter...@hotmail.com]
> Sent: Thursday, January 28, 2010 5:04 PM
> To: Carlson, John W.; dbi-users@perl.org
> Subject: RE: selecting millisecond or microsecond accuracy from varray of 
> timestamps
>
>
>
>   
>> From: carlso...@llnl.gov
>> To: dbi-users@perl.org
>> Date: Thu, 28 Jan 2010 11:42:42 -0800
>> Subject: selecting millisecond or microsecond accuracy from varray of 
>> timestamps
>>
>> We have an oracle type,
>>
>> CREATE OR REPLACE TYPE ARCHIVE.VOLTAGE_TIMESTAMP_ARRAY AS VARRAY(200) OF 
>> TIMESTAMP;
>>
>> We would like to get millisecond or microsecond accuracy out of these 
>> timestamps. We are currently using DBD::Oracle 1.21. Here is a sample query, 
>> with several varrays & rows being returned for an identifier, which we 
>> stitch together based on timestamp. (there may be several rows per 
>> identifier).
>>
>> select identifier, output_voltage, output_current, voltage_timestamp from 
>> CTS_VOLTAGE_ARCHIVE where unit = 'CRYO' and shot_id = ? order by sample_num
>>
>> We are getting the varray values out with an array reference, not a table 
>> function. We would like to continue doing this. I am not currently sure what 
>> accuracy the inserts into the varray are.
>>     
>
> Well they are as accurate as any timestamp.
>
> Varray is not a 'special' field in any way.  Oracle actually strores the 
> VARRAY in a seperate table of (in this case) 201 fields of 1 for a locator/id 
> and 200 for your max size of your VARRAY.  One of the reasons it never caught 
> on as it does not really save anything over a regular relational table except 
> it might be eaiser for a novice DBA who has an OOD programming background?
>
>
>   
>> I am wondering if upgrading to DBD::Oracle 1.23 would improve the situation 
>> about getting millisecond or microsecond accuracy.
>>     
>
> Upgrading to 1.23 will not help in this in any way.
>
> Just to ask another question are you looseing acurracy when selecting out you 
> values witt 1.21??
>
> the code for getting a timestamp is like this uses OCIDateTimeToText and puts 
> it into a buffer of 200chars +1 for '\0'
>
> do you need more accuracy than that??
>
> Looking into the code I see that we do not supply a
> fsprec (IN)  value that Specifies the precision in which the fractional 
> seconds is returned.  not sure it this is what is effecting you
> Cheers
>
> John Scoles
>
>   
>> Thanks,
>> John Carlson
>>
>>
>>     
>
> ________________________________
>
>   


Reply via email to