Home >Backend Development >PHP Tutorial >Detailed explanation of PHP access to Oracle stored procedure instance
php Detailed explanation of accessing oracle stored procedure instances
For example, my local Oracle database has a package, which contains a stored procedure:
create or replace package PKG_TRANS_REL is -- Author : test -- Created : -- Purpose : test -- Public type declarations PKG_NAME varchar2(20) := 'PKG_TRANS_REL'; --存储过程,测试用 procedure pro_GC_withdraw(in_merch_no in varchar2, in_withdraw_amt in number, out_result out number, out_errmsg out varchar2); end PKG_TRANS_REL;
The package name is PKG_TRANS_REL, The stored procedure is pro_GC_withdraw. This stored procedure has four parameters, two input parameters and two output parameters.
Example of calling via pdo in PHP:
$this->_pdo = new PDO(PDO_DB_DNS, PDO_DB_USER, PDO_DB_PASSWORD); $call = "CALL PKG_TRANS_REL.pro_GC_withdraw(?,?,?,?)"; try{ $stmt = $this->_pdo->prepare($call); $stmt->bindParam(1, $merch_no); $stmt->bindParam(2, $amount, PDO::PARAM_INT); $stmt->bindParam(3, $result, PDO::PARAM_INT, 4); $stmt->bindParam(4, $error_msg, PDO::PARAM_STR, 64); $stmt->execute(); }catch (PDOException $e) { $msg = 'SQL:'.$e->getMessage(); $msg = iconv('GBK','UTF-8',$msg); user_dump('SQL:'.$msg); return false; } ...
The third parameter of bindParam defaults to PDO::PARAM_STR. If it is other types, it must be specified
It is relatively simple to pass the value of the input parameter, but the output parameter is slightly more complicated, and the length must be specified.
For more php access to oracle stored procedure examples, please pay attention to the PHP Chinese website for related articles!