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

SHIMOOKA Hideyuki php-users@php.gr.jp
Thu, 21 Nov 2002 18:28:20 +0900


下岡です。

---- 原 啓次さん曰く...

>具体的なエラーは以下のメッセージです。
>Warning: OCIStmtExecute: ORA-00933: SQL command not properly ended 
(snip)
>しかし、直接SQL*PLUSで実行したところ正しく実行できました。

実際に$lstrSqlに入っているSQLで実行してみたのでしょうか?


>ソースは以下のようになっております。
>●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作成部分を実際に実行してみると、$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;
		BEGIN 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);END;

----ここまで

と入ります。

SQLの最後が「;END;」となりますが、「; END;」と半角スペースを
空けてないから、という理由ではないですかね?

-- 
H.Shimooka / shimooka@axissoft.co.jp