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

SHIMOOKA Hideyuki php-users@php.gr.jp
2002年11月21日 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

AltStyle によって変換されたページ (->オリジナル) /