我是Spring世界里的一个新人。我有一个问题,从oracle包调用过程并将游标返回到Spring的更好的方法是什么?
我可以像在经典java中那样使用“可调用语句”,但我认为还有更好、更干净的方法,如何做到这一点?
姓名:尼奥,玛丽姓:安德森,史密斯性别:M,W年龄:20,25卷:测试,测试
b)同时,我们有一个包含过程的包HOME_TEST_PKG
过程show_people_data(VARCHAR2中的i_name,o_resp_set OT SYS_REFCURSOR)
dbms_output.put_line('Hello 1');
打开o_resp_set以选择姓名、姓氏、性别、年龄、从name=I_NAME人中滚动;
dbms_output.put_line('Hello 2');
dbms_output.put_line('Hello 3');
OPEN o_resp_set FOR SELECT 'something wrong' as error from dual;
@RequestMapping(value = "/DBtest")
@ResponseBody
public Map DBtest() throws SQLException {
private String PROCEDURE_NAME = "{call test.home_test_pkg.show_people_data(?,?)}";
JSONObject answer = new JSONObject();
CallableStatement stmt = null;
Connection conn = null;
ResultSet rset = null;
String testNameNeo="NEO"; --simple check input for procedure
try {
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:XE", "testname", "testpass");
stmt = conn.prepareCall(PROCEDURE_NAME);
stmt.setString(1, testNameNeo);
stmt.registerOutParameter(2, OracleTypes.CURSOR);
stmt.execute();
rset = (ResultSet) stmt.getObject(2);
while (rset.next()) {
String name = rset.getString(1);
log.info(name);
answer.put("name",rset.getObject(1).toString());
answer.put("surname",rset.getObject(2).toString());
}
}catch (Exception a){
log.error("Exception "+a);
}finally {
rset.close();
stmt.close();
conn.close();
}
return Collections.singletonMap("response", answer);
}
我认为最简单的解决方案是像下面的示例那样使用@Procedure注释创建一个存储库接口。
@Repository
public interface MyRepository extends CrudRepository<MyEntity, Long> {
@Procedure(name = "test.home_test_pkg.show_people_data")
List<MyEntity> getPeopleData(@Param("my_param_in") String myParamIn);
}
场景:我有一个存储过程,它基于两个输入从表中获取数据:一个日期和一个字符串(这是一个列名)。第一个过程是从另一个过程调用的,该过程使用光标循环表中的行,并将每一行传递给第一个过程的字符串(要检查的列名)。我对第二个过程(即直接调用的过程)的输入是日期。 问题:当我单独调用它时,我的第一个过程运行良好。我的第二个过程是抛出一些我不知道如何修复的语法错误。 Obs:我已经在这里检查了关于这个主题的一些
我有一个微调器,我用数据库sqlite列中的光标填充它,它工作正常,但并不理想。我添加了另一个微调器来选择列并在微调器中显示,但这是我在构建适配器时遇到的问题。这是我的代码: 我从数据库中正确地获取列,但是如果我从其他列传递光标,应用程序无法构建适配器。我尝试只传递String[]中的name列,但也失败了。 谢了。
我想使用Java流使用数据库游标。我希望Java流能够根据需要获取和处理行,并避免先在内存中加载所有500万行,然后再进行处理。 是否可以在不将整个表加载到RAM中的情况下使用它? 到目前为止,我的代码如下所示: 它确实工作得很好,但是有点麻烦,我想利用流应用编程接口。
本文向大家介绍MySql游标的使用实例,包括了MySql游标的使用实例的使用技巧和注意事项,需要的朋友参考一下 mysql游标使用的整个过程为: 1.创建游标 2.打开游标 3.使用游标 4.关闭游标 实例代码如下所示:
问题内容: 由于某些奇怪的原因,我无法从Python测试应用程序中的callproc调用中获得结果。MqSQL 5.2.47中的存储过程如下所示: 现在,在Python 3.3中使用PyCharm时,在调用此存储过程时似乎什么也找不到。这段代码为我提供了预期的结果: 但是这段代码带有cursor.fetchall()或cursor.fetchone()… …返回“ mysql.connector.
我有一个在包中定义的存储过程。该过程接受两个参数,一个是游标: 我是这样调用这个过程的: 它将返回以下错误: 你好,阿尼尔班。