尝试使用Spring JdbcTemplate从Java访问AS400 / DB2存储过程

时间:2012-03-14 18:13:25

标签: java spring db2 jdbctemplate

尝试使用Spring JdbcTemplate从

访问Java中的AS400 / DB2存储过程
XmlBeanFactory beanFactory2 = new XmlBeanFactory(new ClassPathResource(
                "datasource_as400.xml"));
        DataSource ds2 = (DataSource) beanFactory2.getBean("dataSource");

        jdbc2 = new JdbcTemplate(ds2);

        jdbc2.update("{CALL TESTONE(?)}", new Object[] { new String("JOHN") });

我收到以下错误

[DEBUG,SQLErrorCodeSQLExceptionTranslator] Translating SQLException with SQL state '42704', error code '-204', message [[SQL0204] TESTONE in  type *N not found.]; SQL was [{CALL TESTONE(?)}] for task [PreparedStatementCallback]
[FATAL,MainBatch] processDonations(): org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [{CALL TESTONE(?)}]; nested exception is java.sql.SQLException: [SQL0204] TESTONE in  type *N not found.

1 个答案:

答案 0 :(得分:3)

根据iSeries Info Center,SQLCODE -204表示An undefined object or constraint name was detected.

您可能必须指定您的函数所在的架构。(I.E.,CALL YOUR_SCHEMA.TESTONE(?))。

如果它在另一个程序中工作(或者在手动查询时),则可以不同地设置架构路径。您可以通过执行SELECT CURRENT_SCHEMA FROM SYSIBM.SYSDUMMY1进行检查(我不确定iSeries上是否有SYSIBM.SYSDUMMY1,或者虚拟表是否有其他名称...我习惯于z / OS或Linux / Unix / Windows DB2)。