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

高洛峰
高洛峰Original
2017-01-11 11:31:161050Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn