将日期参数绑定到存储过程

时间:2014-08-13 10:09:28

标签: php oracle stored-procedures

我试图将日期参数绑定到存储过程。 $ conn没问题,所有参数都是正确的。我直接在db中调用此过程没有问题。我试图打印错误,但我什么也得不到。我现在没有附加exec_cur因为我猜,问题在于绑定或调用过程。 我也尝试引用i_start和i_end:

 TO_DATE(':i_start', 'DD.MM.YYYY'), TO_DATE( ':i_end', 'DD.MM.YYYY')

在我看来,调用没有得到结果。我从代码中调用它时得到空光标。在直接调用它时,我收到了很多条目。

这里的功能:

function &HST($conn, $i_qot_id, $i_startend, $i_order_by, $i_max_rows, $v_cache_filename)
{
        $outrefc = oci_new_cursor($conn);

         $oerr = OCIError( $outrefc);
         echo "Fetch Code 1:".$oerr["message"];

        $mycursor = oci_parse($conn, "begin PPCKG.HST (:i_qot_id, TO_DATE(:i_start, 'DD.MM.YYYY'), TO_DATE( :i_end, 'DD.MM.YYYY') , :i_order_by, :i_max_rows, :curs); end");

        print $i_startend[0].$i_startend[1].$i_qot_id. $i_order_by. $i_max_rows;
        $oerr = OCIError( $mycursor);
        echo "Fetch Code 1:".$oerr["message"];
        oci_bind_by_name($mycursor, ':i_qot_id'  , $i_qot_id);
        oci_bind_by_name($mycursor, ':i_start'   , $i_startend[0]);
        oci_bind_by_name($mycursor, ':i_end'     , $i_startend[1]);
        oci_bind_by_name($mycursor, ':i_order_by', $i_order_by);
        oci_bind_by_name($mycursor, ':i_max_rows', $i_max_rows);
        oci_bind_by_name($mycursor, ':curs'      , $outrefc, -1, OCI_B_CURSOR);
        $oerr = OCIError( $mycursor);
        echo "Fetch Code 1:".$oerr["message"];
        return exec_cur( $mycursor, $outrefc, $v_cache_filename);
}

1 个答案:

答案 0 :(得分:0)

为什么在调用存储过程时将字符串值转换为日期?为什么以前没有将它转换为日期?

  • 首先,你必须convert你的字符串到目前为止
$time = strtotime(:i_start);
$newformat = date('Y-m-d',$time);
  • 然后将此值传递给oracle存储过程
$mycursor = oci_parse($conn, "begin PPCKG.HST (:i_qot_id, :newformat,...); end;');

阅读this以了解有关php + oracle存储过程的更多信息。