【发布时间】:2017-02-09 10:43:43
【问题描述】:
我正在开发应用程序(spring framework 2.5 - old one)。任务是使用'org.springframework.jdbc.object.StoredProcedure'调用oracle的存储过程
奇怪的是 - 它编译、执行、不抛出任何错误 - 并返回 null 而不是实际值。
我的测试程序(它在一个包中)如下所示:
procedure testprocedure(input1 IN varchar2,
input2 IN varchar2,
output1 OUT VARCHAR2,
output2 OUT VARCHAR2)
IS
BEGIN
output1 := 'return1';
output2 := 'return2';
END testprocedure;
Java 代码是:
public class TestClass extends StoredProcedure {
public static final String input1 = "input1";
public static final String input2 = "input2";
public static final String output1 = "output1";
public static final String output2 = "output2";
public TestClass() {
setSql("testpackage.testprocedure");
setFunction(false);
declareParameter(new SqlOutParameter(output1, Types.VARCHAR));
declareParameter(new SqlOutParameter(output2, Types.VARCHAR));
declareParameter(new SqlParameter(input1, Types.VARCHAR));
declareParameter(new SqlParameter(input2, Types.VARCHAR));
}
public TestReturn getTestProcedureOUTs (String pinput1, String pinput2) {
Map<String, Object> in = new HashMap<String, Object>();
in.put( input1, pinput1);
in.put( input2, pinput2);
System.out.println("Calling " + getSql() + " with parameters: " + in);
Map<String, Object> res = execute(in);
System.out.println("output is " + res);
return new TestReturn((String) res.get(output1), (String) res.get(output2));
}}
stdout 的输出是
output is {output2=null, output1=null}
我怀疑这以某种方式连接到 Windows 版本(Windows 10) 爪哇版(1.7) Oracle 驱动程序(ojdbc6.jar)
或其他东西 - 很明显,我自己可以看到它。
【问题讨论】:
-
已经知道答案了 - 但暂时不要打开,以防有人喜欢这样的测验。提示在这里“其他东西 - 显而易见”
-
如果您知道答案,那么您应该将其发布为答案,它可能对其他人有所帮助。没有什么比谷歌解决问题更令人沮丧的了,在没有答案的情况下得到一个 SO 问题,但只有 OP 的评论,他在没有更多细节的情况下修复了该评论。
-
对不起。谢谢你的评论。好点。
标签: java spring oracle jdbc spring-jdbc