使用自定义类型输出参数从JDBC调用HANA存储过程

2020-09-12 09:50发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我在HANA(带有本地VM上的应...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我在HANA(带有本地VM上的应用程序的Express Edition 2)上创建了以下过程:

创建过程MYDB.UNIVERSITY.TestProc(out_students MYDB.UNIVERSITY.TT_STUDENTS)
 语言SQLSCRIPT SQL安全调用程序读取SQL数据为
 开始
   out_students =来自MYDB.UNIVERSITY.STUDENT的SELECT NAME,FIRST_NAME和SEMESTERS;
 END; 

现在,我想调用它并使用JDBC获得参数" out_students"的结果。 据我所知,我可以使用" CallableStatement"类调用过程,并使用其" registerOutParameter"方法在特定位置注册输出参数。 这是相关的代码段:

 CallableStatement stmt = connection.prepareCall(" {CALL MYDB.UNIVERSITY.TestProc(?)}");;
 stmt.registerOutParameter(1,Types.STRUCT," MYDB.UNIVERSITY.TT_STUDENTS");
 stmt.execute(); 

但是,出现以下错误:

查询失败:SAP DBTech JDBC:无效的参数索引:1
com.sap.db.jdbc.exceptions.JDBCDriverException:SAP DBTech JDBC:无效的参数索引:1
com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:26)
处的com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:191)
HANAConnector.main(HANAConnector.java :)上的sap.db.jdbc.PreparedStatementSapDB._registerOutParameter(PreparedStatementSapDB.java:2357)
在com.sap.db.jdbc.CallableStatementSapDB.registerOutParameter(CallableStatementSapDB.java:708)
32)

将输出参数的类型更改为原始类型可以很好地工作,因此自定义类型必须存在一些问题。

3条回答
ZJXianG
2020-09-12 10:30

嗨, Luca Toldo

该实用程序功能只是我所需要的 快速编写,以便为我的测试/调试目的提供可读的输出。 由于我并不为那段代码感到特别自豪(甚至还没有半断 )我不会在这里放置它。

无论如何我都会回复您的电子邮件...

干杯

一周热门 更多>

相关问答