2013-11-01 20 views
1

我试过使用指定的参数名来调用存储过程,但是JDBC无法接受参数。它说:CallableStatement在PostgreSQL上带有参数名

Method org.postgresql.jdbc4.Jdbc4CallableStatement.setObject(String,Object) is not yet implemented.

我用postgresql-9.2-1003.jdbc4

我有任何其他方式做到这一点?

我知道我可以指定序列号。但我想指定参数名称,因为这样做更方便。

我的代码:

String call_statement = "{ ? = call procedure_name(?, ?, ?) }";    
CallableStatement proc = connection.prepareCall(call_statement); 
proc.registerOutParameter(1, Types.OTHER);    
proc.setObject("param1", 1); 
proc.setObject("param2", "hello"); 
proc.setObject("param3", true); 
proc.execute(); 
ResultSet result = (ResultSet)proc.getObject(1); 

回答

2

不幸的是,使用参数名称不能由JDBC 4驱动程序的PostgreSQL数据库的实现所支持的特性。请参阅GrepCode中此JDBC 4实现的code

但是,您仍然可以继续使用整数(变量或文字)来指示参数的位置。

+0

Aww ..什么是无赖。这个功能从来没有实现过吗? – William

+0

PostgreSQL尚未实现JDBC 4的所有功能。显然,Oracle和IBM已实现此功能。 –

+0

好的,谢谢队友。 – William

相关问题