Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370737

Summary: @StoredProcedureParameter call not constructed properly
Product: z_Archived Reporter: Missing name <jnandal>
Component: EclipselinkAssignee: Nobody - feel free to take it <nobody>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P2 CC: jnandal, tom.ware
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Windows 7   
Whiteboard:

Description Missing name CLA 2012-02-06 11:06:52 EST
Build Identifier: 20110916-0149

The call command is not constructed properly.

It should be
CALL gmcommon.gmspcup ('JMILNES', 'TEST', ' ')         

Not

CALL gmcommon.gmspcup (1 = 'JMILNES', 2 = 'TEST', 3 = ' ')


Reproducible: Always

Steps to Reproduce:
1.  Sample of Stored Procedure 
@NamedStoredProcedureQuery(name="ChangePassword",
procedureName = "gmcommon.gmspcup", 
returnsResultSet = false, 
parameters = {
@StoredProcedureParameter(queryParameter = "1", direction=Direction.IN),
@StoredProcedureParameter(queryParameter = "2", direction=Direction.IN),
@StoredProcedureParameter(queryParameter = "3", direction=Direction.IN_OUT)
	}
)

2.  Sample of code:

Query q = em.createNamedQuery("ChangePassword");
			
q.setParameter(1, "JMILNES");
q.setParameter(2, "TEST");
q.setParameter(3, errorMessage);
q.executeUpdate();

3.  Sample of error message:

[EL Config]: 2012-02-06 10:46:49.302--ServerSession(17758476)--Connection(13419912)--Thread(Thread[main,5,main])--connecting(DatabaseLogin(
	platform=>DB2MainframePlatform
	user name=> "xxxxxx"
	datasource URL=> "jdbc:as400:xxxx;prompt=false"
))
[EL Config]: 2012-02-06 10:46:49.622--ServerSession(17758476)--Connection(29751107)--Thread(Thread[main,5,main])--Connected: jdbc:as400:berkdev;prompt=false
	User: xxxxx
	Database: DB2 UDB for AS/400  Version: 06.01.0000 V6R1m0
	Driver: AS/400 Toolbox for Java JDBC Driver  Version: 9.4
[EL Finest]: 2012-02-06 10:46:49.622--ServerSession(17758476)--Connection(29751107)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Finest]: 2012-02-06 10:46:49.622--ServerSession(17758476)--Connection(29751107)--Thread(Thread[main,5,main])--Connection released to connection pool [default].
[EL Info]: 2012-02-06 10:46:49.683--ServerSession(17758476)--Thread(Thread[main,5,main])--file:/C:/Users/jmilnes/upload/L/build/classes/_default login successful
[EL Finer]: 2012-02-06 10:46:49.693--ServerSession(17758476)--Thread(Thread[main,5,main])--Canonical Metamodel class [com.berkadia.model.User_] not found during initialization.
[EL Finest]: 2012-02-06 10:46:49.693--ServerSession(17758476)--Thread(Thread[main,5,main])--End deploying Persistence Unit default; session file:/C:/Users/jmilnes/upload/L/build/classes/_default; state Deployed; factoryCount 1
[EL Finer]: 2012-02-06 10:46:49.713--ServerSession(17758476)--Thread(Thread[main,5,main])--client acquired: 23275591
[EL Finer]: 2012-02-06 10:46:49.723--ClientSession(23275591)--Thread(Thread[main,5,main])--acquire unit of work: 30604342
[EL Finer]: 2012-02-06 10:46:49.723--UnitOfWork(30604342)--Thread(Thread[main,5,main])--begin unit of work flush
[EL Finer]: 2012-02-06 10:46:49.723--UnitOfWork(30604342)--Thread(Thread[main,5,main])--end unit of work flush
[EL Finest]: 2012-02-06 10:46:49.723--UnitOfWork(30604342)--Thread(Thread[main,5,main])--Execute query DataModifyQuery()
[EL Finest]: 2012-02-06 10:46:49.733--ServerSession(17758476)--Connection(29751107)--Thread(Thread[main,5,main])--Connection acquired from connection pool [default].
[EL Finer]: 2012-02-06 10:46:49.733--ClientSession(23275591)--Connection(29751107)--Thread(Thread[main,5,main])--begin transaction
[EL Fine]: 2012-02-06 10:46:49.753--ClientSession(23275591)--Connection(29751107)--Thread(Thread[main,5,main])--CALL gmcommon.gmspcup(1 = JMILNES, 2 = TEST, 3 = ?)
	bind => [  => 3]
[EL Fine]: 2012-02-06 10:46:50.143--ClientSession(23275591)--Thread(Thread[main,5,main])--SELECT COUNT(*) from SYSIBM.SYSDUMMY1 WHERE 1 = 0
[EL Warning]: 2012-02-06 10:46:50.323--UnitOfWork(30604342)--Thread(Thread[main,5,main])--Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: [SQL0104] Token = was not valid. Valid tokens: ) ,.
Error Code: -104
Call: CALL gmcommon.gmspcup(1 = 'JMILNES', 2 = 'TEST', 3 = ?)
	bind => [  => 3]
Query: DataModifyQuery()
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
	at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)
	at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:236)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:216)
	at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)
	at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1463)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:540)
	at com.berkadia.controller.Test.main(Test.java:32)
Caused by: java.sql.SQLException: [SQL0104] Token = was not valid. Valid tokens: ) ,.
	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:703)
	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:669)
	at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:1677)
	at com.ibm.as400.access.AS400JDBCPreparedStatement.<init>(AS400JDBCPreparedStatement.java:253)
	at com.ibm.as400.access.AS400JDBCCallableStatement.<init>(AS400JDBCCallableStatement.java:120)
	at com.ibm.as400.access.AS400JDBCConnection.prepareCall(AS400JDBCConnection.java:1850)
	at com.ibm.as400.access.AS400JDBCConnection.prepareCall(AS400JDBCConnection.java:1751)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1464)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1423)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:697)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:585)
	... 16 more

Exception in thread "main" Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: [SQL0104] Token = was not valid. Valid tokens: ) ,.
Error Code: -104
Call: CALL gmcommon.gmspcup(1 = 'JMILNES', 2 = 'TEST', 3 = ?)
	bind => [  => 3]
Query: DataModifyQuery()
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
	at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)
	at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:236)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:216)
	at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)
	at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1463)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:540)
	at com.berkadia.controller.Test.main(Test.java:32)
Caused by: java.sql.SQLException: [SQL0104] Token = was not valid. Valid tokens: ) ,.
	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:703)
	at com.ibm.as400.access.JDError.throwSQLException(JDError.java:669)
	at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:1677)
	at com.ibm.as400.access.AS400JDBCPreparedStatement.<init>(AS400JDBCPreparedStatement.java:253)
	at com.ibm.as400.access.AS400JDBCCallableStatement.<init>(AS400JDBCCallableStatement.java:120)
	at com.ibm.as400.access.AS400JDBCConnection.prepareCall(AS400JDBCConnection.java:1850)
	at com.ibm.as400.access.AS400JDBCConnection.prepareCall(AS400JDBCConnection.java:1751)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1464)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1423)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:697)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:585)
	... 16 more
Comment 1 Tom Ware CLA 2012-02-17 10:46:43 EST
Setting target and priority.  See the following page for the meanings of these fields:

http://wiki.eclipse.org/EclipseLink/Development/Bugs/Guidelines

Community: Please vote for this bug if it is important to you.  Votes are one of the main criteria we use to determine which bugs to fix next.
Comment 2 Eclipse Webmaster CLA 2022-06-09 10:16:46 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink
Comment 3 Eclipse Webmaster CLA 2022-06-09 10:27:20 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink