Date: Tue, 24 Apr 2001 09:34:57 -0400
Reply-To: Sigurd Hermansen <hermans1@WESTAT.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Sigurd Hermansen <hermans1@WESTAT.COM>
Subject: Re: Bug: Oracle-Pass-Through V8.1 <==> Oracle 8.1.6 ?
On Tue, 24 Apr 2001 10:48:44 +0200, Heiko Welter <heiko.welter@T-MOBIL.DE>
wrote:
>Hi!
>
>In our environment:
>
>SAS V8.1
>ORACLE 8.1.6
>Sun Solaris 2.7
>
>we observe that, using Oracle-Pass-Trough, number(16) values (Oracle)
>fetched into the SAS-System loose there 16. Digit. Has anyone made the same
>experience?
>
>Example:
>Value in Oracle 1000000000000009
>==> Value in SAS after fetch 1000000000000000
>
>Doese someone know, something about this Problem in V8.2 (fixed???) ?
>
>cheers for your help/suggestions
>Heiko
I would not assume that you are seeing an error as such. From the context
it seems possible that a value of integer type in an Oracle database could
lose precision when cast as a value of real number type in SAS. As a rule I
do not expect to see numeric precision of SAS real numbers past the 15th
digit. The SAS-L archives include a number of discussions of numeric
precision in SAS.
SAS does not offer an integer data type. It does allow you to represent
long strings of digits in character type. Oracle, originally developed for
Unix platforms, has traditionally used integers as identifiers. The
implementation in Unix does not compromise precision. (In that sense, the
integer type acts as a hybrid of real and character types.)
You can pass through a query, in Oracle PL/SQL syntax, that casts the
integers as characters, and you can then use the long digit strings as
identifiers. Of course, using real numbers as identifiers is a risky
business, as seen often on SAS-L. Sig
|