Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung des PHP-Zugriffs auf die Instanz einer gespeicherten Oracle-Prozedur
Detaillierte Erläuterung des PHP-Zugriffs auf die Instanz einer gespeicherten Oracle-Prozedur
Zum Beispiel enthält meine lokale Oracle-Datenbank ein Paket mit einer gespeicherten Prozedur:
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;
Der Paketname ist PKG_TRANS_REL, die gespeicherte Prozedur ist pro_GC_withdraw. Diese gespeicherte Prozedur hat vier Parameter, zwei Eingabeparameter und zwei Ausgabeparameter.
Beispiel für einen Aufruf über 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; } ...
Der dritte Parameter von bindParam ist standardmäßig PDO::PARAM_STR. Wenn es sich um andere Typen handelt, muss dies der Fall sein angegeben
Es ist relativ einfach, den Wert des Eingabeparameters zu übergeben, während der Ausgabeparameter etwas komplizierter ist und die Länge angegeben werden muss.
Weitere Beispiele für PHP-Zugriff auf gespeicherte Oracle-Prozeduren finden Sie auf der chinesischen PHP-Website für verwandte Artikel!