2017-07-03 27 views
1
callStmt= conn.prepareCall("{call get_id(?,?,?);}"); 
    callStmt.setString(1,"T_CUSTOMER"); 
    callStmt.registerOutParameter(2,Types.VARCHAR); 
    callStmt.setString(3,"GD"); 
    callStmt.execute(); 
    String string = callStmt.getString(2); 
    System.out.println(string); 

我在谷歌搜索,发现出现这种错误,因为“{}”可以,但我怎么能叫一个Oracle过程没有“{}”?或我应该使用哪个令牌?JDBC调用过程中,发生非支持SQL92

+0

尝试删除调用转义内部的';'(所以使用'{call get_id(?,?,?)}') –

回答

1

大括号不适用于Oracle。把它们拿出来,你应该很好去。 Oracle传统上使用占位符与字符':'后跟一个词。

如果您不喜欢关键字call,可以使用: “BEGIN get_id(?,?,?); END;”

+0

需要JDBC驱动程序来支持'{call ..}'JDBC转义,会感到惊讶,我不会得到Oracle驱动程序的支持。我会更早地认为原因是呼叫转义中的';'。 –

+0

@Mark Rotteveel如果';'是原因,那么我会投下这个问题,因为这意味着缺乏研究。 – jeff6times7