我想输出一个不在我的表格中的附加变量,有人可以解释如何做到这一点,或者为什么不可能这样做?
即 -
OPEN V_CURSOR FOR SELECT ee.EmployeeID, v_overtime_worked FROM EMPLOYEE_RECORDS ee;
答案 0 :(得分:1)
所以基本上你想存储那个游标,来自表的数据,以及另一个与表无关的变量v_overtime_worked?
您收到了什么错误?
我确切知道这是有效的...所以基本上你可以在光标中添加另一个变量:
declare
c_Curs SYS_REFCURSOR;
v_overtime_worked VARCHAR2(120) := '1000';
v_book_title VARCHAR2(255) := '';
v_xxx VARCHAR2(120);
BEGIN
OPEN c_Curs FOR SELECT book_title, v_overtime_worked FROM books;
LOOP
FETCH c_Curs INTO v_book_title, v_xxx;
EXIT WHEN c_Curs%NOTFOUND OR c_Curs IS NULL;
DBMS_OUTPUT.PUT_LINE(v_book_title || v_xxx);
end loop;
close c_Curs;
END;
至于你的Java问题我恐怕不知道答案......我需要做研究:)
也许你需要这样的东西:
@Override
public void execute(Connection con) throws SQLException {
CallableStatement call = con.prepareCall(ProcedureCalls.GET_ALL_BOOKS);
call.registerOutParameter(1, OracleTypes.CURSOR);
call.execute();
ResultSet rs = (ResultSet) call.getObject(1);
if(rs!=null){
while (rs.next ()) {
Book b = new Book();
b.setBookId(rs.getLong("book_id"));
b.setBookTitle(rs.getString("title"));
b.setBookYear(rs.getInt("book_year"));
b.setBookAuthor(rs.getString("author"));
book_list.add(b);
}
if(rs!=null) rs.close();
if(call!= null) call.close();
}
}