【发布时间】:2012-04-27 20:05:52
【问题描述】:
我必须使用 PostgreSQL,但是当我尝试在 Java 中读取函数时遇到了一点问题。
我的功能:
CREATE OR REPLACE FUNCTION tiena.RecursosData7(x text, OUT id text, OUT valor text)RETURNS SETOF record
AS
'
SELECT recursodc.idrecursodc, recursodc.valorfonte
FROM tiena.recursodc
WHERE valorfonte=$1;
'
LANGUAGE 'sql';
然后在 Java 中我尝试以这种方式读取函数:
try {
if (AbrirConexao()) {
conn.setAutoCommit(false);
proc = conn.prepareCall("{ call tiena.recursosdata7(?,?, ?)}");
proc.setString(1,"IG - SP");
proc.registerOutParameter(2, Types.VARCHAR);
proc.registerOutParameter(3, Types.VARCHAR);
//proc.execute();
//resSet = (ResultSet) proc.getObject(1);
resSet = proc.executeQuery();
while(resSet.next())
{
String id = resSet.getString(1);
String fonte = resSet.getString(2);
System.out.println("id : "+ id +", fonte: "+ fonte);
}
proc.close();
}
但我总是遇到同样的错误。
Erro : Nenhum resultado foi retornado pela consulta.
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:274)
at LerArquivos.ConexaoBD.RecuperarIDRecurso2(ConexaoBD.java:117)
at upload_cg.Main.main(Main.java:24)
我试图移动参数的位置,函数,我搜索了很多,但我没有找到解决方案。你有什么建议吗?
【问题讨论】:
-
如果您提及您遇到的什么类型的错误,这肯定会有所帮助。
-
如果堆栈跟踪(可能还有类)使用该社区更广泛使用的语言(抱歉,比如英语),这也会有所帮助。 (出于好奇,葡萄牙语是是什么语言?)
标签: java sql postgresql