Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 如何使用ref_游标中的表传递附加值_Plsql - Fatal编程技术网

Plsql 如何使用ref_游标中的表传递附加值

Plsql 如何使用ref_游标中的表传递附加值,plsql,Plsql,我想输出一个表中没有的额外变量,有人能解释一下怎么做,或者为什么不可能 即 所以基本上你想把表中的数据和另一个与表无关的变量v_超时工作存储在游标中 你收到了什么错误 我可以肯定的是,这是可行的…所以基本上你可以在光标中放置另一个变量: declare c_Curs SYS_REFCURSOR; v_overtime_worked VARCHAR2(120) := '1000'; v_book_title VARCHAR2(255) := ''; v_xxx VARCHAR2(1

我想输出一个表中没有的额外变量,有人能解释一下怎么做,或者为什么不可能


所以基本上你想把表中的数据和另一个与表无关的变量v_超时工作存储在游标中

你收到了什么错误

我可以肯定的是,这是可行的…所以基本上你可以在光标中放置另一个变量:

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();
                    }
                }

Dim Employees As DataTable=New GetEmployees(ot)。Tables(0)对不起,实际上我调用ref_光标的问题是,我将其加载到一个数据集
Dim Employees As DataTable=New GetEmployees。Tables(0)
然后我检查新变量,但它声称它不是所选表的一部分<代码>Employees.DataSet.Tables(0).Rows(0).Item(“v_加班工作”)我不明白您刚才编写的代码与最初的问题之间的关系…编辑:好的,现在我看到问题了,我在VB中,我的意思是它不返回加班工作,只返回员工ID,即使我从SQL Developer中调用SP。因此,您有一个存储过程,它返回上述游标…您尝试过我的示例吗?…该示例在我测试时有效…也许您可以粘贴整个存储过程,以及如何使用游标中的数据…这将非常有用
@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();
                    }
                }