PHP用返回值调用oracle过程。但没有价值返回

时间:2019-12-19 09:35:01

标签: php oracle

我尝试在php上运行oracle的过程。但是它没有返回变量,并且运行php时程序也没有增加薪水。

我使用命令正常运行在sqldeveloper上的运行过程

    declare 
    P_SALARY number;

BEGIN
     kimtest_UPDATESALARYIWITHINOUT(1,0.1,P_SALARY);

end;

这是我希望P_SALARY返回的示例过程。

 create or replace PROCEDURE kimtest_UPDATESALARYIWITHINOUT(P_EMPLOYEEID IN NUMBER,P_SALARYPERCENT IN NUMBER, P_SALARY OUT NUMBER)
IS 
    -- declare local variable 
    -- get data and put into variable--
    SP_SALARY   number;

Begin 

    if P_SALARYPERCENT > 0 then 
        -- get salary from table put into variable
        select employee_salary into SP_SALARY
        from kimtest_employee
        where employee_id = P_EMPLOYEEID;

        --check value parameter out --
        P_SALARY := SP_SALARY;
        DBMS_OUTPUT.PUT_LINE('=====IF STATEMENT SALARY UPDATED===='|| P_SALARY);

        -- update salary from table and multiply with increament percent 
        SP_SALARY := SP_SALARY + (SP_SALARY*P_SALARYPERCENT); 
        --put data to parameter OUT
        P_SALARY := SP_SALARY;
        -- show output of parameter out that should be update
        DBMS_OUTPUT.PUT_LINE('=====IF STATEMENT SALARY UPDATED===='|| P_SALARY);

        --updata salary back to database
         update kimtest_employee
         set employee_salary = SP_SALARY
         where employee_id = P_EMPLOYEEID;

    else
        DBMS_OUTPUT.PUT_LINE('===ELSE STATEMENT====');    
    end if;

END;

这里是我的PHP代码。

<?php

$dbstr = "oracleconnector";

$objConnect = oci_connect("kim","Ioncube03",$dbstr);

if($objConnect)
{
    print 'Successfully connected to Oracle Database!'."<br/>";;

    //call procedure
    $strSQL = 'BEGIN kimtest_UPDATESALARYIWITHINOUT(:PHP_EMPLOYEEID, :PHP_SALARYPERCENT, :PHP_SALARY); END;';
    $objParse = oci_parse($objConnect, $strSQL);
    // Declare cursor for OUT SYS_REFCURSOR
    //$objCursor = oci_new_cursor($objConnect);


    // Bind input parameters

    oci_bind_by_name($objParse, ':PHP_EMPLOYEEID', $S_EMPLOYEEID) ;

    oci_bind_by_name($objParse, ':PHP_SALARYPERCENT', $S_SALARYPERCENT) ;

    // Bind output parameters

    oci_bind_by_name($objParse, ':PHP_SALARY', $S_SALARY);

    //assign value for input 
    $S_EMPLOYEEID       = "1";
    $S_SALARYPERCENT    = "0.1";

    //execute procedure
    oci_execute ($objParse);


    // Display OUT : pRowFound
    echo "data of employee id : ".$S_EMPLOYEEID."<br/>";
    echo "data of salary percent : ".$S_SALARYPERCENT."<br/>";
    echo "data of salary after procedure : ".$S_SALARY."<br/>";

}
else
{
    $errmsg = oci_error();
    print 'Oracle connection failed' . $errmsg['message'];
}
oci_close($objConnect);
?>

0 个答案:

没有答案