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

原 啓次 php-users@php.gr.jp
Thu, 21 Nov 2002 18:38:56 +0900


原@クエストです。

> >具体的なエラーは以下のメッセージです。
> >Warning: OCIStmtExecute: ORA-00933: SQL command not properly ended 
> (snip)
> >しかし、直接SQL*PLUSで実行したところ正しく実行できました。
> 
> 実際に$lstrSqlに入っているSQLで実行してみたのでしょうか?

そうです。
echoで出力し、実行しました。

> >ソースは以下のようになっております。
> >●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の最後が「;END;」となりますが、「; END;」と半角スペースを
> 空けてないから、という理由ではないですかね?

こちらは空けてみましたが、状況は変わりませんでした。
構文的には問題ないのでしょうか!?

# SQL*PLUSで実行でき、PHPから出来ないのは
# bind変数などが間違っているのか。。。

しかし、いろいろやってみても状況は変わりません。
どなたかヒントでもいいのでよろしくお願いします。

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