ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Problems reading VARCHAR2(4000) field from Oracle

Post new topic  Reply to topic
 Problems reading VARCHAR2(4000) field from Oracle « View previous topic :: View next topic » 
Author Message
martinrydman
PostPosted: Mon Mar 01, 2004 1:40 am    Post subject: Problems reading VARCHAR2(4000) field from Oracle Reply with quote

Centurion

Joined: 30 Jan 2004
Posts: 139
Location: Gothenburg, Sweden

Hi!

Anyone familiar with accessing Oracle from WBIMB, your help would be greatly appreciated. The problem is descibed below.

TIA!

/Martin



Versions:
---------
Oracle: 9.2.0.4.0
ODBC Driver: 9.02.00.54 (Oracle in Client)
WBIMB: 5.0.2 (CSD02)
Plattform: WIN2000 SP4

Problem description:
--------------------
We're reading from an Oracle table defined as:

Code:
create table CONCAT_MESSAGES
(
    MESSAGE_TYPE_ID              VARCHAR2(20)           not null,
    UNIQUE_GROUP_NUMBER           NUMBER(32)             not null,
    RECORD_NUMBER                NUMBER(4)              not null,
    TOTAL_RECORDS_IN_GROUP       NUMBER(4)              not null,
    HEADER                       VARCHAR2(200)          not null,
    MSG                          VARCHAR2(4000)         not null,
    TSTAMP                       DATE                   not null,
    constraint CONCAT_MESSAGES_PK primary key (UNIQUE_GROUP_NUMBER, RECORD_NUMBER)


We're experiencing intermittent problems with the MSG field. We've created a testflow that only tries to access this table. The only thing executed in this flow is the following ESQL:

Code:
SET Environment.Message.Record[] = (SELECT DB.MSG FROM Database.CONCAT_MESSAGES AS DB);

This statement will succeed sporadically, as a subsequent trace of Environment confirms. Most of the time, however, it will terminate with the ExceptionList shown at the end of this text.

To make sure that there's nothing wrong with the connection or table as such, the following statement has also been run in the same flow (accessing HEADER instead of MSG):

Code:
SET Environment.Message.Record[] = (SELECT DB.HEADER FROM Database.CONCAT_MESSAGES AS DB);


This request will allways succeed.


Quote:
ExceptionList:
--------------
(
(0x01000000):RecoverableException = (
(0x03000000):File = 'F:\build\S000_P\src\DataFlowEngine\ImbComputeNode.cpp'
(0x03000000):Line = 471
(0x03000000):Function = 'ImbComputeNode::evaluate'
(0x03000000):Type = 'ComIbmComputeNode'
(0x03000000):Name = 'MRTest#FCMComposite_1_2'
(0x03000000):Label = 'MRTest.Compute'
(0x03000000):Text = 'Caught exception and rethrowing'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2230
(0x01000000):RecoverableException = (
(0x03000000):File = 'F:\build\S000_P\src\DataFlowEngine\ImbRdl\ImbRdlStatementGroup.cpp'
(0x03000000):Line = 158
(0x03000000):Function = 'SqlStatementGroup::execute'
(0x03000000):Type = 'ComIbmComputeNode'
(0x03000000):Name = 'MRTest#FCMComposite_1_2'
(0x03000000):Label = 'MRTest.Compute'
(0x03000000):Text = 'Error detected, rethrowing'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2488
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '.MRTest_Compute.Main'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '5.9'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'SET Environment.Message.Record[ ] = (SELECT COLUMN(0) AS :MSG FROM DATABASE(SELECT DB.MSG FROM CONCAT_MESSAGES DB));'
)
(0x01000000):RecoverableException = (
(0x03000000):File = 'F:\build\S000_P\src\DataFlowEngine\ImbRdl\ImbRdlExternalDb.cpp'
(0x03000000):Line = 276
(0x03000000):Function = 'SqlExternalDbStmt::executeStmt'
(0x03000000):Type = 'ComIbmComputeNode'
(0x03000000):Name = 'MRTest#FCMComposite_1_2'
(0x03000000):Label = 'MRTest.Compute'
(0x03000000):Text = 'The following error occurred during execution of an SQL statement'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2519
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = ''
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '1.1'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'DPWEBSPP'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'SELECT DB.MSG FROM CONCAT_MESSAGES DB'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = ''
)
(0x01000000):DatabaseException = (
(0x03000000):File = 'F:\build\S000_P\src\DataFlowEngine\ImbOdbc.cpp'
(0x03000000):Line = 2335
(0x03000000):Function = 'ImbOdbcDynamicResultSet::initialise'
(0x03000000):Type = ''
(0x03000000):Name = ''
(0x03000000):Label = ''
(0x03000000):Text = 'Unsupported SQL type'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2324
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'MSG'
)
(0x01000000):Insert = (
(0x03000000):Type = 2
(0x03000000):Text = '-9'
)
)
)
)
)
)
Back to top
View user's profile Send private message
mgk
PostPosted: Tue Mar 02, 2004 10:25 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Hi,

What this error is telling you is that the value returned by Oracle to an SQLDescribeParam call for MSG returned -9 which is not a supported ODBC datatype. I do not have my manuals with the at the moment, but I think -9 is a wide character format of somekind. Are you sure that the definition of the table you provided is correct? Check that the MSG column is not a wide characte column. If you are sure it is not wide chars then I suggest you raise a PMR.


Cheers,
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
martinrydman
PostPosted: Wed Mar 03, 2004 3:20 am    Post subject: Reply with quote

Centurion

Joined: 30 Jan 2004
Posts: 139
Location: Gothenburg, Sweden

Hi,

and thanks! I've got this answer from another newsgroup, and it seems it did the trick:

You appear to be using the Oracle-supplied ODBC driver.
You must use the driver supplied with WBIMB which is called something like
'MQSeries DataDirect 4.10...'. This is the only ODBC driver supported for
use
with WBIMB - using any other will have unpredictable results.
You must also configure each ODBC datasource definition as described in the
WBIMB documentation - both on the ODBC GUI panels and the Windows registry.

John Overstall
IBM Websphere MQ Development.

/Martin
Back to top
View user's profile Send private message
Thripura Sundari
PostPosted: Tue Jul 26, 2005 5:14 am    Post subject: Compute Node for Database Connectivity - peculiar behavior Reply with quote

Acolyte

Joined: 13 Jun 2005
Posts: 57
Location: Bangalore, India

Hi all,
I am using SQL server 2000 and I created a database connection (in the data perspective) giving the sql user authentication, and specifying
Quote:
DataDirect Connect JDBC Driver
and
Quote:
mssqlserver.jar
as the class path. The class was
Quote:
com.microsoft.jdbc.sqlserver.SQLServerDriver
.
I used a compute node to select some data from a table, the ESQL for which is as follows:
Code:
CREATE COMPUTE MODULE DBFlow_Compute
   CREATE FUNCTION Main() RETURNS BOOLEAN
   BEGIN
SET OutputRoot.MQMD.StrucId=MQMD_STRUC_ID;
SET OutputRoot.MQMD.Version=MQMD_CURRENT_VERSION;
      SET OutputRoot.XML.Test.Result[]= (SELECT T.CruiseLineId, T.CruiseLineName, T. CruiseLineDescription FROM Database.dbo.CruiseLine AS T);
   END;
END MODULE;

The input is any xml which has nothing to do with the compute node except that it shouldnt throw an XML parser exception.
Well, the comedy (at least because I dont know the reason..) is that, I get the same exception text for the above SQL code as the one I got for a different compute node I had earlier used, in which the esql was,
Code:


SET OutputRoot.XML.Test.Result[]= (SELECT T.CityCode, T.CountryCode, T.Statename, T.StateCode FROM Database.dbo.City AS T);

I had deployed the bar file every time and infact emptied it and added the contents. I put a trace node, but of no use, it is not crossing the compute node. So I am not able to trace the exception from the compute node.
I would like to know if it requires reconnecting or recreating the connection to the database everytime we deploy.

I would like to know the reason for the exception, and why this peculiar behavior. I am surprised.

Thanks.
Regards,
Thripura Sundari
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Problems reading VARCHAR2(4000) field from Oracle
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.