[PHP-users 11663] PHPからOracleのストアドプロシージャを呼びたい

原 啓次 php-users@php.gr.jp
Thu, 21 Nov 2002 17:51:57 +0900


お世話になっております。
原@クエストです。

先程は改行のないソースを記述してしまい
申し訳ありませんでした。
もう一度送りなおします。

環境:
Redhat7.2
PHP 4.2.4-dev
Oracle Client 8.1.7

上記の環境で開発をしております。
やろうとしていることはPHPからORACLEの
ストアドプロシージャを呼びだすことです。

通常のSQL文などは正しく動作しているので、
プロシージャの呼び方が間違えているのでしょうか!?

具体的なエラーは以下のメッセージです。

Warning: OCIStmtExecute: ORA-00933: SQL command not properly ended 

ORA-00933を調べたところ、
「SQL コマンドが正しく終了されていません。」
とありました。

しかし、直接SQL*PLUSで実行したところ正しく実行できました。

ソースは以下のようになっております。
●PHP(一部)
		$lstrSql .= "DECLARE 
		w_IDSEIKN      PLAN_USER.IDSEIKN%TYPE;  
		w_IDMEIKN      PLAN_USER.IDMEIKN%TYPE;  
		w_KISKBN       PLAN_USER.KISKBN%TYPE;   
		w_IDKISCD      PLAN_USER.IDKISCD%TYPE;  
		w_IDYAKUCD     PLAN_USER.IDYAKUCD%TYPE; 
		w_IDSZKCD      PLAN_USER.IDSZKCD%TYPE;  
		w_IDMAIL       PLAN_USER.IDMAIL%TYPE;   
		w_SECJYOHO     PLAN_USER.SECJYOHO%TYPE; 
		";
		$lstrSql .= "BEGIN ";
		$lstrSql .= "ESTGETUIDINFO(:in_userid, :in_passwd, :w_SysCD, w_IDSEIKN, w_IDMEIKN, 
		w_KISKBN, w_IDKISCD, w_IDYAKUCD, w_IDSZKCD, w_IDMAIL, w_SECJYOHO,:w_RET);";
		$lstrSql .= "END;";

		// SQL文のparse
		$stmt = OCIParse($lobjConn, $lstrSql);
		OCIBindByName ( $stmt, ":in_userid", mFunstrCnvEncStr2Sql($_POST["ctl_UserId"]), -1 );
		OCIBindByName ( $stmt, ":in_passwd", mFunstrCnvEncStr2Sql($_POST["ctl_Password"]), -1 );
		OCIBindByName ( $stmt, ":w_SysCD", $w_SysCD, -1 );
		OCIBindByName ( $stmt, ":w_RET", &$w_RET, -1 );
		OCIExecute ( $stmt );

●プロシージャ(一部)
PROCEDURE ESTGETUIDINFO
(
inUserID    in  VARCHAR2,
inPassword  in  VARCHAR2,
inSysCD     in  VARCHAR2,
outIDSEIKN  out VARCHAR2,
outIDMEIKN  out VARCHAR2,
outKISKBN   out VARCHAR2,
outIDKISCD  out VARCHAR2,
outIDYAKUCD out VARCHAR2,
outIDSZKCD  out VARCHAR2,
outIDMAIL   out VARCHAR2,
outSECJYOHO out VARCHAR2,
outRET      out VARCHAR2                                                                                                    
)

色々試してみたのですが、解決できそうに無いので
皆様の知恵をお借りしたいと思いました。

よろしくお願いします。

以上です。                                                                                                                           
------------------------------------------
(株)クエスト
システムソリューション事業部
 ソフトウエア・テクノロジーセンター
原 啓次
Mail:hara@quest.co.jp
------------------------------------------