甲骨文的新手。我的经验是构建向数据库发送查询并返回“结果集”的web应用程序,例如在Java中使用Spring和JDBCTemplate。
public List<Widget> findAllWidgets() {
return jdbcTemplate.query("SELECT * FROM widgets", new WidgetRowMapper());
}
public Map<String,String> callMyProcedure() {
String errorCode="";
String errorMessage="";
jdbcTemplate.update("call myprocedure(?,?,?,?)","input1","input2",errorCode,errorMessage);
return Map.of("errorCode",errorCode,"errorMessage",errorMessage);
}
编辑:我接受了Alex不使用JdbcTemplate的回答,因为这似乎是更好的方法。我自己的答案确实使用了JdbcTemplate,但需要更多的代码,所以如果您正在搜索专门回答该问题的内容,这就可以了。
您可以使用普通的JDBC。
final String charlie;
final String zulu;
try (CallableStatement cs = connection.prepareCall("{call myprocedure(?,?,?,?,?,?,?,?)}")) {
cs.setString(1, "foo");
cs.setString(2, "bar");
cs.setString(3, "baz");
cs.setString(4, "whisky");
cs.setString(5, "tango");
cs.setString(6, "foxtrot");
cs.registerOutParameter(7, Types.VARCHAR);
cs.registerOutParameter(8, Types.VARCHAR);
cs.execute();
connection.commit(); // optional
charlie = cs.getString(7);
zulu = cs.getString(8);
}
在使用JDBC时,使用getInt
方法和类似的方法是危险的,因为它们将类型转换为基元,并且零被0替换。最好使用(Integer)cs.getObject()
。类似地,setint
不支持引用类型。
在oracle.jdbc.driver.t4cttioer.ProcessErr(t4cttioer.java:450)在oracle.jdbc.driver.t4cttioer.processErr(t4cttioer.java:399)在oracle.jdbc.driver.t4c8oall.processErr(t4c8oall.java:1017)在oracle.jdbc.driver.t
我可以通过一个真正的数据库链接调用PL/SQL过程和包,但似乎不能通过两个不同数据库中的环回数据库链接(一个数据库链接引用同一个数据库中的模式,用于测试目的)这样做。 在环回数据库链路上执行远程plsql包/过程/函数是否需要技巧? 本地数据库(foo): 远程数据库(条形图): 本地数据库(foo) 错误报告:ORA-06550:第2行第5列:PLS-00201:标识符测试_PROC@MATTH
我是pl/sql编程新手,我需要你的帮助。 我想做个手术。 更具体地说,我有如下表1 对于相同的COL1和COL2/COL3,请检查从COL4中选择不同的值,例如COL1=600、COL2=140/COL3=2和COL2=150/COL3=3返回20和35 并在此表TABLE1中插入行 如果P_FLG1='Y',我在表1中插入。如果P_FLG2='Y',我也在表3等中插入 我正在试着做下面的程序,
问题内容: 如何使用python脚本调用外部程序并检索输出和返回代码? 问题答案: 看 一下子流程 模块:下面是一个简单的示例…
本文向大家介绍Sql Server 存储过程调用存储过程接收输出参数返回值,包括了Sql Server 存储过程调用存储过程接收输出参数返回值的使用技巧和注意事项,需要的朋友参考一下 创建存储过程: 接收输出参数: 2,带返回值 创建存储过程: 接收返回值: 以上所述是小编给大家介绍的Sql Server 存储过程调用存储过程接收输出参数返回值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小
问题内容: 我已经编写了一个VBScript函数来调用存储过程。过去,我编写了许多函数,这些函数使用输入参数调用存储过程,但是在这种情况下,我需要使用Output参数。 在另一个应用程序中,我使用实体框架调用完全相同的存储过程,因此该存储过程很好。 这是我的代码: adParamInput, 50, userId)) cmd.Parameters.Append(cmd.CreateParamete