Я получаю ошибку ниже при вызове хранимой процедуры XXXX, написанной на мэйнфрейме DB2. В этой хранимой процедуре у нас есть параметры «GRAPHIC» и «LONGGRAPHIC», для которых я передаю параметр типа «java.sql.CHAR» и «java.sql.VARCHAR».

INFO: SQLErrorCodes loaded: [DB2, Derby, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
        Exception while executing Test Case
org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; bad SQL grammar [{call SYSPROC.XXXX(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]; nested exception is com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -444, SQLSTATE: 42724, SQLERRMC: XXXX
Caused by: com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -444, SQLSTATE: 42724, SQLERRMC: XXXX
    at com.ibm.db2.jcc.c.tf.d(tf.java:1396)
    at com.ibm.db2.jcc.b.jb.l(jb.java:367)
    at com.ibm.db2.jcc.b.jb.e(jb.java:92)
    at com.ibm.db2.jcc.b.w.e(w.java:72)
    at com.ibm.db2.jcc.b.cc.h(cc.java:203)
    at com.ibm.db2.jcc.c.tf.q(tf.java:1363)
    at com.ibm.db2.jcc.c.uf.d(uf.java:2388)
    at com.ibm.db2.jcc.c.vf.Z(vf.java:159)
    at com.ibm.db2.jcc.c.vf.execute(vf.java:142)
    at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:906)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:872)
    at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:904)
    at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:113)
    at com.cst.test.common.SPCall.execute(SPCall.java:73)
    at com.cst.test.daoLayer.SPTest.testLogic(SPTest.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:618)
    at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
    at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
    at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
    at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
    at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
    at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
    at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Failed Test Case Count : 0
-1
Raj 3 Июн 2013 в 21:22

1 ответ

Лучший ответ

Код SQL -444 означает, что внешняя программа, вызванная из хранимой процедуры, не найдена. Либо имя неверно, либо программа некорректно связана.

Подробнее здесь: http://pic.dhe.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db2z9.doc.codes/src/tpc/n444.htm

2
mustaccio 3 Июн 2013 в 23:20
Спасибо, эта ошибка устранена. основная причина была ==> «Если значение столбца EXTERNAL_NAME правильное, используйте редактор связей MVS, чтобы создать требуемый модуль загрузки MVS в одной из библиотек загрузки MVS, используемых вашей установкой для хранимых процедур».
 – 
Raj
4 Июн 2013 в 09:55