Explication détaillée de l'accès PHP à l'instance de procédure stockée Oracle
Par exemple, ma base de données Oracle locale contient un package contenant une procédure stockée :
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;
Le nom du package est PKG_TRANS_REL et la procédure stockée est pro_GC_withdraw. Cette procédure stockée a quatre paramètres, deux paramètres d'entrée et deux paramètres de sortie.
Exemple d'appel de pdo en 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; } ...
Le troisième paramètre de bindParam est par défaut PDO::PARAM_STR, s'il est autre Le type doit être spécifié
Il est relativement simple de transmettre la valeur du paramètre d'entrée, mais il est légèrement plus compliqué de transmettre le paramètre, et la longueur doit être spécifiée.
Pour plus d'accès PHP aux exemples de procédures stockées Oracle, veuillez faire attention au site Web PHP chinois pour les articles connexes !