如何使用oracle PROCEDURE获取php中的输出

时间:2014-06-05 10:31:37

标签: php sql oracle stored-procedures

我试图从PL / SQL调用具有IN和OUT参数的php中的存储过程。当我尝试执行下面的块时,我得到警告:oci_execute():ORA-06550:第11行,第4列:PLS-00103:遇到符号"文件结束"当期待以下之一时: <标识符> <双引号分隔标识符>符号";"取代了"文件结尾"继续。

PHP代码:

<?php

$sql = 
"DECLARE
    x_emp_number       VARCHAR2(300);
    x_emp_name         VARCHAR2(300);
    x_emp_entiltment   VARCHAR2(300);
    x_emp_job          VARCHAR2(300);
    x_emp_dept         VARCHAR2(300);
    x_emp_bs_group     VARCHAR2(300);

BEGIN
    apps.xx_hrms_custom_mobile.get_emp_detail_info (729,x_emp_number,x_emp_name,x_emp_entiltment,x_emp_job,x_emp_dept,x_emp_bs_group);

END ";

$res1 = oci_parse($link, $sql);

oci_execute($res1);

while ($row = oci_fetch_array($res1)) {
    echo "Completed";
}

exit();
?>

这是程序

 PROCEDURE get_emp_Detail_Info    (p_person_id    IN     NUMBER,
                                x_Emp_Number          OUT VARCHAR2,
                                x_Emp_Name            OUT VARCHAR2,
                                x_Emp_entiltment      OUT VARCHAR2,
                                x_Emp_Job             OUT VARCHAR2,
                                x_Emp_Dept            OUT VARCHAR2,
                                x_Emp_Bs_Group        OUT VARCHAR2);

我如何获得输出值并在php中使用它?

1 个答案:

答案 0 :(得分:0)

在PL / SQL块中的END之后缺少一个分号。试一试:

<?php

$sql = 
"DECLARE
    x_emp_number       VARCHAR2(300);
    x_emp_name         VARCHAR2(300);
    x_emp_entiltment   VARCHAR2(300);
    x_emp_job          VARCHAR2(300);
    x_emp_dept         VARCHAR2(300);
    x_emp_bs_group     VARCHAR2(300);

BEGIN
    apps.xx_hrms_custom_mobile.get_emp_detail_info (729,x_emp_number,x_emp_name,x_emp_entiltment,x_emp_job,x_emp_dept,x_emp_bs_group);

END; ";  // Added semi-colon after END

$res1 = oci_parse($link, $sql);

oci_execute($res1);

while ($row = oci_fetch_array($res1)) {
    echo "Completed";
}

exit();
?>

分享并享受。