IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to fix SQLCODE=-440, SQLSTATE=42884


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kishpra

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Sat Feb 18, 2017 2:31 am
Reply with quote

Hello Team,

My Java application is trying to call a Native SQL stored procedure AA400400 which is using a DB2 table.

When calling that stored procedure, we are getting the below error in Java application logs:

10:49:31,261 INFO [stdout] (http-/10.1.109.2:8443-1) DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=PROCEDURE;AA400400 DRIVER=4.14.113

My application connection URL in standalone file:
<connection-url> jdbc:db2://TZZSST.zpc.us.com:1330/TZZDB2T:currentSchema=TZZ1;resultSetHoldability=2;
</connection-url>

Application call to stored procedure
Call AA400400(NULL,NULL);

It does not points to correct schema TZZ1 and we can see the stored proc running in different schema i.e. SYSPROC.

We updated the connection URL as:
<connection-url> jdbc:db2://TZZSST.zpc.us.com:1330/TZZDB2T:currentSchema=TZZ1;currentFunctionPath="SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","TZZ1";resultSetHoldability=2;
</connection-url>

But it still runs under SYSPROC.

Then we changed the connection URL as below:
<connection-url> jdbc:db2://TZZSST.zpc.us.com:1330/TZZDB2T:currentSchema=TZZ1;currentFunctionPath="TZZ1","SYSFUN","SYSPROC","SYSIBMADM","SYSIBM";resultSetHoldability=2;
</connection-url>

But still getting -440.

Please advise.

Thanks.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3109
Location: NYC,USA

PostPosted: Sun Feb 19, 2017 7:46 am
Reply with quote

Did you contact DBA at your site first?

SQLCODE -440 with SQLSTATE 42884 in DB2 typically indicates an undefined function error. This error occurs when a function referenced in your SQL statement is not defined or does not exist in the database. Here's how you can fix it:

Check Function Name: Verify that the function name used in your SQL statement is spelled correctly and matches the actual name of the function defined in the database. Even a small typo can cause SQLCODE -440.

-- Example: Check the function name used in your SQL statement
Code:
SELECT MY_FUNCTION() FROM MY_TABLE;


Ensure Function Existence: Confirm that the function is defined in the database and is accessible to the user executing the SQL statement. Use database management tools or query the system catalogs to check the existence of the function.

-- Example: Query to check if a function exists in DB2
Code:
SELECT ROUTINENAME FROM SYSCAT.ROUTINES WHERE ROUTINENAME = 'MY_FUNCTION';


Schema Qualification: If the function is defined in a specific schema, ensure that you are referencing it with the correct schema qualification in your SQL statement.

-- Example: Schema-qualified function reference
Code:
SELECT SCHEMA_NAME.MY_FUNCTION() FROM MY_TABLE;


Permissions and Privileges: Make sure that the user executing the SQL statement has the necessary permissions and privileges to access and execute the function. Check if any authorization issues are causing the function to be inaccessible.

Function Parameters: If the function requires parameters, ensure that you are providing the correct number and data types of parameters in your SQL statement.

-- Example: Function call with parameters
Code:
SELECT MY_FUNCTION('param1', 123) FROM MY_TABLE;
Back to top
View user's profile Send private message
View previous topic : : View next topic  
Post new topic   Reply to topic All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts SQLCODE=-311 in Cobol SP-DB2. COBOL Programming 2
No new posts SQLCODE = -122 while using the scalar... DB2 4
No new posts SQLCODE = -16002 when using XMLEXISTS DB2 1
No new posts Is SQLCODE -811 possible while fetchi... DB2 1
No new posts SQLCODE=-204 SQLSTATE=42704 DB2 4
Search our Forums:


Back to Top