我尝试在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);
?>