public class DimensionStoneDaoHibernate extends HibernateDaoSupport implements DimensionStoneDao
{
public Connection con = null;
int i=0;
public void setCon(Connection con) {
this.con = getSession().connection();
}
public Connection getCon() {
setCon(con);
return con;
}
public List getMineralByApplicationId(String appId) {
List<String> mineral = new ArrayList<String>();
PreparedStatement query =getCon().prepareStatement("select * from multiple_mineral_report(?) as types(val1 varchar)",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
query.setInt(1, Integer.parseInt(appId));
ResultSet rs=query.executeQuery();
String value = new String();
i = 0;
while(rs.next()){
value = rs.getString(1);
mineral.add(value);
}
}
}
上面的SQL函數multiple_mineral_report(?)
返回字符串。當執行上面的代碼下面的異常被拋出:Postgres錯誤:列定義列表只允許返回「記錄」的函數
org.postgresql.util.PSQLException: ERROR: a column definition list is only allowed for functions returning "record"
CREATE OR REPLACE FUNCTION multiple_mineral_report(b integer)
RETURNS character varying AS
$BODY$
declare
k varchar := '';
sql_res record;
begin
for sql_res in execute 'select mineral_name from application_mineral as am inner join mineral as m on(am.mineral=m.mineral_id) where am.application_id = '||$1||'' loop
k = k || sql_res.mineral_name || ', ';
end loop;
return k;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION multiple_mineral_report(integer) OWNER TO postgres;
SShould添加更多的信息:與您使用的語言開始。 – 2013-03-05 09:42:46
好的,我已根據您的要求編輯 – 2013-03-05 11:34:44
請向我們展示'multiple_mineral_report'的'create function'聲明 – 2013-03-05 11:36:42