执行游标

时间:2014-05-12 15:23:54

标签: php oracle

我无法从该函数执行存储过程。这是我尝试的:

function STD( $i_std_id, $i_order_by   )
{

        $conn = open_db("CONN");
        $outrefc  = oci_new_cursor($conn); //Declare cursor variable
        $mycursor = oci_parse ($conn, "begin  TEST.STD( :i_std_id, :i_order_by, :curs); end;"); // prepare procedure call

        oci_bind_by_name($mycursor,':i_std_id'  , $i_std_id   );
        oci_bind_by_name($mycursor,':i_order_by', $i_order_by );
        oci_bind_by_name($mycursor,':curs'      , $outrefc, -1, OCI_B_CURSOR); // bind procedure parameters


        return exec_cur($conn, $mycursor, $outrefc);

}

连接正常。无论如何我没有结果。我期待更多的行。

我可以用echo $i_order_by."#### $i_std_id"打印参数。 当我使用打印参数直接在DB中运行程序时,我得到输出。

这是签名:

PROCEDURE STD
(
    i_std_id     IN NUMBER,
    i_qot_id     IN NUMBER,
    i_order_by   IN VARCHAR,
    o_recordset  OUT SYS_REFCURSOR
);

有任何线索吗?谢谢。

1 个答案:

答案 0 :(得分:1)

参数不存在问题吗?我可以看到你用3个参数调用过程STD,而你的签名中提到4个(i_qot_id似乎是额外的一个)。