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-10 14:43:051086Durchsuche

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 und die gespeicherte Prozedur ist pro_GC_withdraw. Diese gespeicherte Prozedur hat vier Parameter, zwei Eingabeparameter und zwei Ausgabeparameter.

Beispiel für den Aufruf von 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 er ein anderer ist Der Typ muss angegeben werden

Die Übergabe des Werts des Eingabeparameters ist relativ einfach, die Übergabe des Parameters ist jedoch etwas komplizierter und die Länge muss angegeben werden.

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
Vorheriger Artikel:PHP+Oracle-Paging-KlasseNächster Artikel:PHP+Oracle-Paging-Klasse