简体   繁体   中英

Handling Dates from Oracle to SQL Server 2005 using OPENQUERY

I have linked SQL Server 2005 to an Oracle Server, and am using OpenQuery() to pass data from Oracle to SQL Server.

So, for instance, the following query works fine:

SELECT *
FROM OPENQUERY(ORACLE_LINK, 'SELECT FIELD1
    FROM ORACLE.TABLE1');

Everything works, unless I ask for a field which is a date/time in the Oracle database. For instance, say that TABLE1 has ten fields, one of which is a timestamp. If I ask for all nine fields except for the timestamp, it works. If I ask:

SELECT *
FROM OPENQUERY(ORACLE_LINK, 'SELECT *
    FROM ORACLE.TABLE1');

I get the following error:

OLE DB provider "MSDAORA" for linked server "ORACLE_LINK" returned message "Oracle error occurred, but error message could not be retrieved from Oracle.".
OLE DB provider "MSDAORA" for linked server "ORACLE_LINK" returned message "Data type is not supported.".

I also get the same error if I ask for only the timestamp field.

What is the best way of handling this error? Thanks.

I do it with this function (partial code):

select @StringOut = '{ts ''''' + convert(varchar(20), @DateIn, 20) + ''''' }';
RETURN @StringOut

and this goes into the query:

and procedure_date_dt = ' + dbo.TimestampString(@date) + '
and event_type = ''''Time Notation''''

and it works when I run it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM