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 » SELECT accessing both DB and MessageTree

Post new topic  Reply to topic
 SELECT accessing both DB and MessageTree « View previous topic :: View next topic » 
Author Message
raj_ebiz
PostPosted: Thu Aug 17, 2006 10:36 am    Post subject: SELECT accessing both DB and MessageTree Reply with quote

Novice

Joined: 19 Oct 2002
Posts: 11

Hi,
Are there any issues in accessing both Database and Message Tree in the same SELECT statement.

I have a SELECT statement like below

inRef is a pointer to a element in the MessageTree

SELECT T as OrderLine FROM inRef.OrderLine[] as T , Database.ITEM as L Where T.ItemId=L.ITEMID

The above statement didnot return any rows. When i looked into the usertrace, i see that T.ItemId is always NULL.

Note:
SELECT T as OrderLine FROM inRef.OrderLine[] as T
works fine.

Just wondering if anyone had to perform something like this before.

Thanks
Back to top
View user's profile Send private message
shrek
PostPosted: Fri Aug 18, 2006 2:42 am    Post subject: Reply with quote

Acolyte

Joined: 19 Feb 2005
Posts: 61
Location: Gudivada,India

Can you post your message tree. Thanks.
Back to top
View user's profile Send private message
raj_ebiz
PostPosted: Fri Aug 18, 2006 5:58 am    Post subject: SELECT accessing both DB and Message Tree Reply with quote

Novice

Joined: 19 Oct 2002
Posts: 11

Following is the message i am using. This is just a sample xml i am using in a test flow just to see if it works.

<Order>
<OrderLine>
<LineNum>1</LineNum>
<ItemId>123</ItemId>
</OrderLine>
<OrderLine>
<LineNum>2</LineNum>
<ItemId>456</ItemId>
</OrderLine>
</Order>

Thanks,
Back to top
View user's profile Send private message
raj_ebiz
PostPosted: Mon Aug 21, 2006 10:58 am    Post subject: Reply with quote

Novice

Joined: 19 Oct 2002
Posts: 11

Still wondering if anyone has done something like this before ? The ESQL reference does say that we can access both DB and MessageTree in the same select statement.
Back to top
View user's profile Send private message
mgk
PostPosted: Mon Aug 21, 2006 11:39 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Hi,

This kind of JOIN between a DB and a message tree is tested and works fine. If you are getting no rows, it is because no rows match your WHERE clause. What is in the DB in this case?

Regards,
_________________
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
raj_ebiz
PostPosted: Mon Aug 21, 2006 1:54 pm    Post subject: Reply with quote

Novice

Joined: 19 Oct 2002
Posts: 11

Thanks for your response MGK.

The DB has a matching row for my WHERE clause.

Below is a sample ESQL i am testing with.

SELECT T as OrderLine FROM inRef.OrderLine[] as T , Database.ITEM as L Where T.ItemId=L.ITEMID

When i run a UserTrace, i see that T.ItemId is always evaluating to NULL and hence the Where clause is always returns false.

Thanks,
Back to top
View user's profile Send private message
mgk
PostPosted: Tue Aug 22, 2006 4:49 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Can you post the table definition and sample contents? Also can you post the Message Broker version and CSD, and the DB type (e.g. DB2?) and version.

Regards,
_________________
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
jefflowrey
PostPosted: Tue Aug 22, 2006 4:57 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Also, post a trace of inRef.OrderLine[].

it's probably not what you think it is.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
raj_ebiz
PostPosted: Tue Aug 22, 2006 10:20 am    Post subject: Reply with quote

Novice

Joined: 19 Oct 2002
Posts: 11

My Broker version is 5 and CSD 05. I am running the locally on Win XP.
I have created a test table in the Broker's database. The database is DB2 8.2.
Table has only 2 rows.

select * from ITEMLIST

ITEMID
----------
999
456

2 record(s) selected.


My test message flow is simple. MQInput->Compute->MQOutput.

Input XML is like below.
<Order>
<OrderLine>
<LineNum>1</LineNum>
<ItemId>123</ItemId>
</OrderLine>
<OrderLine>
<LineNum>2</LineNum>
<ItemId>456</ItemId>
</OrderLine>
</Order>

Compute node has the following ESQL.
CALL CopyMessageHeaders();
DECLARE inRef REFERENCE to InputBody.Order ;
SET OutputRoot.XML.Order.OrderLine[] = (SELECT ITEM T FROM inRef.OrderLine[] as T , Database.ITEMLIST as L Where T.ItemId=L.ITEMID );
RETURN TRUE;

What is surprising me is that the above SELECT statement looks different in the UserTrace.

BIP2537I: Node 'TestSelect.Compute': Executing statement 'DECLARE inRef REFERENCE TO InputBody.Order;' at (.TestSelect_Compute.Main, 4.4).
BIP2537I: Node 'TestSelect.Compute': Executing statement 'SET OutputRoot.XML.Order.OrderLine[ ] = (SELECT ITEM T FROM DATABASE(SELECT * FROM ITEMLIST L WHERE (?)=(L.ITEMID), T.ItemId), inRef.OrderLine[ ] AS T);' at (.TestSelect_Compute.Main, 7.4).
BIP2538I: Node 'TestSelect.Compute': Evaluating expression '(SELECT ITEM T FROM DATABASE(SELECT * FROM ITEMLIST L WHERE (?)=(L.ITEMID), T.ItemId), inRef.OrderLine[ ] AS T)' at (.TestSelect_Compute.Main, 7.56).
BIP2573W: Node 'TestSelect.Compute': (.TestSelect_Compute.Main, 7.56) : Finding first SELECT result.
BIP2538I: Node 'TestSelect.Compute': Evaluating expression 'DATABASE(SELECT * FROM ITEMLIST L WHERE (?)=(L.ITEMID), T.ItemId)' at (, 1.1).
BIP2538I: Node 'TestSelect.Compute': Evaluating expression 'T.ItemId' at (.TestSelect_Compute.Main, 7.118).
BIP2544I: Node 'TestSelect.Compute': Executing database SQL statement 'SELECT * FROM ITEMLIST L WHERE (?)=(L.ITEMID)' derived from (, 1.1); expressions 'T.ItemId'; resulting parameter values 'NULL'.
BIP2570W: Node 'TestSelect.Compute': (.TestSelect_Compute.Main, 7.56) : There were no items in the FROM clause satisfying the WHERE clause.
BIP2562I: Node 'TestSelect.Compute': Assigning a list to 'OutputRoot.XML.Order.OrderLine[]'.
BIP2537I: Node 'TestSelect.Compute': Executing statement 'RETURN TRUE;' at (.TestSelect_Compute.Main, 10.3).


Any pointers would be helpful.


Thanks
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 » SELECT accessing both DB and MessageTree
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.