Я написал хранимую процедуру в PostgreSQL с условием if и else if. В каждом условии есть разные запросы, которые возвращают разные результаты. Как я могу получить доступ к результату в Java, используя метод resultset.getString()
?
Хранимая процедура:
CREATE FUNCTION public."testDynamicReturn"(_tagId character varying)
RETURNS ??? -- what should be written in the place of ???
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
IF _tagId == 'stu' then
RETURN query
SELECT "StudentRollNo.","StudentName","GuardianName" FROM public."DetailsOfStudents";
ELSE if _tagId == 'teach' then
RETURN query
SELECT "TeacherName","TeacherAddress" FROM public."DetailsOfTeachers";
END;
$BODY$;
Java-код:
public static void main(String[] args) {
Connection connection = DBUtility.getDBConnection();
String sp = "{ call \"testDynamicReturn\"(?)}";
try {
CallableStatement statement = connection.prepareCall(sp);
statement.setString(1, "stu");
statement.execute();
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
String a = resultSet.getString(???);
System.out.println(a);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Если я отправлю "stu" в качестве параметра хранимой процедуры, результат будет:
--------------------------------------------
StudentRollNo.| StudentName | GuardianName |
--------------------------------------------
15600223596 | John | Doe |
--------------------------------------------
И если я отправлю "teach" в качестве параметра хранимой процедуры, то результат будет:
------------------------------
TeacherName | TeacherAddress |
------------------------------
Adam | New york |
------------------------------
Пожалуйста, ответьте, как этого добиться.