[PHP-users 9380] PEAR + Oracleでストアドプロシージャを実行できない

php-users@php.gr.jp php-users@php.gr.jp
Tue, 20 Aug 2002 00:45:50 +0900


お世話になります。
福田と申します。

複数のDBMSに対応するシステムを作成するべく、PEARを使って開発を行って
いるのですが、RedHatLinux 7.2J + Oracle9i + Apache1.3.26 + PHP4.2.2
の環境だと、文末のソースのようにPEARからquery関数でストアドプロシージャを
呼ぶと、なぜか getMessage() のところでPEAR内部でsyntax errorが返ってきて、
SQLの実行に失敗してしまいます。
ただし、ここを通常のSELECT文に変えると正常に値が戻ってきます。

また、Windows2000 + SQL-Server2000 + Apache1.3.26 + PHP4.2.2 では
実行SQL文を $sql = "exec TEST0001 '123456'"; のように変更することにより、
SQL-Server用のストアドプロシージャを実行できています。

もちろんSQL-ServerとOracleでは違うストアドプロシージャを使っており、
それぞれクエリアナライザとSQL Plusで動作確認はしています。

これは、queryを発行するときにPEAR側のパーサがエラーを出しているの
でしょうか?
それとも、Oracle側のパーサで何か問題が起こっているのでしょうか?

query関数では、DMLなどの通常のSQL以外は実行できないと言うのならまだ
納得もいくのですが、SQL-Serverのストアドプロシージャが正常に動いている
だけに、いまいち理由がつかめません。

もしこの現象について何かお気づきになられた方がおられましたら、
アドバイスをいただけると助かります。

どうぞよろしくお願いいたします。



[ 問題のソースファイル ]
<?
    (略)
  $sql = "exec TEST0001('123456')";
  $rc  = $this->con->query($sql);// connectionは正常です
  if (DB::isError($rc)) {
    die("PEAR ERROR: " . $rc->getMessage());
  } else {
    (略)
  }
?>