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 » ESQL Calling Oracle 11g Stored Procedure error

Post new topic  Reply to topic
 ESQL Calling Oracle 11g Stored Procedure error « View previous topic :: View next topic » 
Author Message
mdmader
PostPosted: Wed Oct 22, 2008 12:15 pm    Post subject: ESQL Calling Oracle 11g Stored Procedure error Reply with quote

Newbie

Joined: 17 Apr 2008
Posts: 7

I've run into a small problem trying to call an Oracle 11g Stored Procedure from ESQL.

This procedure is a simple security verification for an account and service request. The ESQL triggers the error [DataDirect][ODBC Oracle driver]Optional feature not implemented. when it calls the stored procedure.


Actual Error:
DatabaseException
File:CHARACTER:F:\build\S610_P\src\DataFlowEngine\ImbOdbc.cpp
Line:INTEGER:359
Function:CHARACTER:ImbOdbcHandle::checkRcInner
Type:CHARACTER:
Name:CHARACTER:
Label:CHARACTER:
Catalog:CHARACTER:BIPv610
Severity:INTEGER:3
Number:INTEGER:2322
Text:CHARACTER:Child SQL exception
Insert
Type:INTEGER:5
Text:CHARACTER:HYC00
Insert
Type:INTEGER:2
Text:CHARACTER:0
Insert
Type:INTEGER:5
Text:CHARACTER:[DataDirect][ODBC Oracle driver]Optional feature not implemented.

I've searched around on exception but I have not anything that seem relevant. Searched on the Description and the HYC00 code. The ODBC Driver I'm using is "MQSeries DataDirect Techonlogies 5.2 32-Bit Oracle Version 5.20.00.67. Message Broker Version 6.1.0.1, Oracle 9i client 9.2.0.4.0 and Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit.

Every time I try to enable ODBC tracing on my machine and restart Broker, the message flow stays in a stopped state and will not run. If I remove ODBC trace, the flow will again run. Again, if anyone had this problem, please enlighten me.

Has anyone encountered this and know what the error is referring to and if they know what a solution may be.

Any help/pointers/ideas would be appreciated.

ESQL:
CREATE COMPUTE MODULE VerifyRequest
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
SET OutputRoot = InputRoot;
SET OutputLocalEnvironment = InputLocalEnvironment;

DECLARE serviceName CHAR;
DECLARE subscriberName CHAR;
DECLARE validRequest CHAR;
DECLARE valid BOOLEAN;

SET serviceName = InputRoot.MRM.V0_5_SERVICE_NAME;
SET subscriberName = InputRoot.MRM.V0_5_SUBSCRIBERNAME;

call verify(serviceName, subscriberName, valid);

IF (valid <> TRUE) THEN
-- ERROR, Not Valid
SET Environment.Variables.EH.KeyData = 'Verification Exception';
SET Environment.Variables.EH.messageText = 'Invalid Request.';
THROW EXCEPTION;
END IF;

RETURN TRUE;
END;

CREATE PROCEDURE verify(IN p_ServiceName CHAR, IN p_SubscriberName CHAR, INOUT p_Valid BOOLEAN) LANGUAGE DATABASE EXTERNAL NAME "EDSAPP_MGR.PR_EDS_SERVICE.pr_Validate_Service_Call";
END MODULE;

Procedure:
PROCEDURE pr_Validate_Service_Call(p_ServiceName IN VARCHAR2,
p_SubscriberName IN VARCHAR2,
p_Valid IN OUT BOOLEAN)
AS
BEGIN
v_service_found := 0;
SELECT 1
INTO v_service_found
FROM eds_subscription
WHERE svc_subscriber_name = p_subscribername
AND eds_service_name = p_servicename;

if v_service_found = 1 then
p_Valid := TRUE;
else
p_Valid := FALSE;
end if;

EXCEPTION
WHEN NO_DATA_FOUND THEN
p_Valid := FALSE;
WHEN OTHERS THEN
RAISE;
END pr_Validate_Service_Call;
Back to top
View user's profile Send private message
mdmader
PostPosted: Thu Oct 23, 2008 8:21 am    Post subject: Reply with quote

Newbie

Joined: 17 Apr 2008
Posts: 7

I believe I found the answer. From the following link http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r0m0/topic/com.ibm.etools.mft.doc/ak05730_.htm?resultof=%22%4f%72%61%63%6c%65%22%20%22%6f%72%61%63%6c%22%20%22%43%6f%6c%75%6d%6e%22%20%22%63%6f%6c%75%6d%6e%22%20

it appears that BOOLEAN is not supported in ESQL. The strange thing is, if you use CHAR to pass to an Oracle INTEGER in a stored procedure, that works.

We modified the proc to return a VARCHAR to make it work. Still, if anyone has any better suggestions, please let me know.
Back to top
View user's profile Send private message
balu2608
PostPosted: Sun Dec 02, 2012 9:59 pm    Post subject: Call Procedure Optional field Not Implemented Reply with quote

Apprentice

Joined: 18 May 2012
Posts: 39

Hi ,

Try to add NChar in the odbc.ini file for the data base which you ar loging that will solve ur prob.


enable NChar
Back to top
View user's profile Send private message
smdavies99
PostPosted: Sun Dec 02, 2012 10:34 pm    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

Why did you post an answer to a four year old thread? This same question has been answered many times since 2008, even as recently as last month.

IMHO, this is not good forum etiquette.
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
kash3338
PostPosted: Sun Dec 02, 2012 10:37 pm    Post subject: Reply with quote

Shaman

Joined: 08 Feb 2009
Posts: 709
Location: Chennai, India

mdmader wrote:
it appears that BOOLEAN is not supported in ESQL.


The documentation also clearly says this point.
http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r1m0/index.jsp

mdmader wrote:
We modified the proc to return a VARCHAR to make it work. Still, if anyone has any better suggestions, please let me know.


The FLOAT datatype should be used for NUMBER's in ORACLE. The same link helps you,

Quote:
1.If an Oracle database column with NUMBER data type is defined with an explicit precision (P) and scale (S), it is cast to an ESQL DECIMAL value; otherwise it is cast to a FLOAT.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » ESQL Calling Oracle 11g Stored Procedure error
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.