returns setof refcursor
इसका मतलब है कि आपको एक नियमित ResultSet
मिलता है जहां प्रत्येक "पंक्ति" में दूसरी है getObject()
को कॉल करते समय रिजल्टसेट करें :
निम्नलिखित मेरे लिए काम करता है:
ResultSet rs = stmt.executeQuery("select * from usp_sel_article_initialdata_new1()");
if (rs.next())
{
// first result set returned
Object o = rs.getObject(1);
if (o instanceof ResultSet)
{
ResultSet rs1 = (ResultSet)o;
while (rs1.next())
{
int id = rs1.getInt(1);
String name = rs1.getString(2);
.... retrieve the other columns using the approriate getXXX() calls
}
}
}
if (rs.next())
{
// process second ResultSet
Object o = rs.getObject(1);
if (o instanceof ResultSet)
{
ResultSet rs2 = (ResultSet)o;
while (rs2.next())
{
......
}
}
}
psql
. के भीतर से आप उपयोग भी कर सकते हैं select * from usp_sel_article_initialdata_new1()
से * चुनें आपको बस FETCH ALL
. का उपयोग करने की आवश्यकता है उसके बाद। उदाहरण के लिए मैनुअल देखें:http://www। postgresql.org/docs/current/static/plpgsql-cursors.html#AEN59018
postgres=> select * from usp_sel_article_initialdata_new1();
usp_sel_article_initialdata_new1
----------------------------------
<unnamed portal 1>
<unnamed portal 2>
(2 rows)
postgres=> fetch all from "<unnamed portal 1>";
?column?
----------
1
(1 row)
postgres=> fetch all from "<unnamed portal 2>";
?column?
----------
2
(1 row)
postgres=>
(मैंने उपरोक्त उदाहरण के लिए एक डमी फ़ंक्शन बनाया है जो केवल 1
मान के साथ एक पंक्ति देता है पहले कर्सर और 2
. के लिए दूसरे कर्सर के लिए)
संपादित करें :
इसे काम करने के लिए, इसे लेनदेन के अंदर चलाने की जरूरत है। इसलिए ऑटोकॉमिट को बंद कर देना चाहिए:
connection.setAutoCommit(false);