我在 PostgreSQL 中有一个程序:
CREATE OR REPLACE FUNCTION get_geom_difference()
RETURNS void AS
$$
BEGIN
SELECT filedata.num,st_area(ST_Difference(ST_TRANSFORM(filedata.the_geom,70066),filedata_temp.the_geom))
FROM filedata, filedata_temp
Where filedata.num=filedata_temp.num
end;
$$
LANGUAGE 'plpgsql'
我用 Java 调用它并希望得到这个过程的结果。如何更改此程序以使其有可能获得结果?以及如何在 JDBC 中使用它?
现在我用这个:
Integer fileId;
Class.forName("org.postgresql.Driver");
Connection connect= null;
connect = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgis","postgres","123456");
java.sql.CallableStatement proc = connect.prepareCall("{?=call get_geom_difference()}");
proc.registerOutParameter(1, java.sql.Types.Integer);
proc.execute();
ResultSet results = (ResultSet) proc.getObject(1);
while (results.next()) {
fileId=r.getInt("num");
}
proc.close();
connect.close();
out.println(fileId);
但是当我尝试在 JDBC 中调用该过程时,我得到了
错误 org.apache.jasper.JasperException:在第 25 行处理 JSP 页面 /commit_changes.jsp 时发生异常
第 25 行是:proc.execute();