[PHP-users 12758] OCIBindByNameで -1 の指定について

Yuki Endo php-users@php.gr.jp
Thu, 23 Jan 2003 14:59:58 +0900


はじめまして、遠藤と申します。
OCIBindByNameで -1 の指定について教えて頂きたくメールしました。

以下のようなPHP文を実行し、OCIBindByName で -1 を指定すると $w_IDSEIKN 変数の内容が表示さ
れません。
OUTパラメータ outIDSEIKN に格納されている値が1文字だった場合は $w_IDSEIKN 変数の内容が表
示されます。
また、OCIBindByName でOUTパラメータの文字数を直接指定しても正常に表示されるのですが、
OCIBindByName
で -1 を指定し、:w_IDSEIKN の現在の長さを 最大長として設定したいです。
何か分かる方がございましたら、アドバイスをお願いします。


・環境
Apache 1.2.27
Redhat 7.3
PHP 4.2.4-dev
Oracle Client 8.1.7
Oracle8 8.0.5.0.0

・PHP(一部)
$lstrSql  = "BEGIN ";
$lstrSql .= "ESTGETUIDINFO($lctl_UserId, $lctl_Password, '$w_SysCD', :w_IDSEIKN); ";
$lstrSql .= "END;";
$stmt = OCIParse($lobjCon, $lstrSql);
OCIBindByName ( $stmt, ":w_IDSEIKN", &$w_IDSEIKN, -1 );
OCIExecute ( $stmt );
// 変数内容表示
echo $w_IDSEIKN;

・プロシージャ(一部省略)
CREATE OR REPLACE PROCEDURE ESTGETUIDINFO
(
	inUserID	in	VARCHAR2,
	inPassword	in	VARCHAR2,
	inSysCD		in	VARCHAR2,
	outIDSEIKN	out     VARCHAR2
)
IS
	CURSOR	 CUR_PU IS
	SELECT
		ID,
		PASS,
		SYSCD,
		IDSEIKN
	FROM
		PLAN_USER
	WHERE
		ID = inUserID ;
BEGIN
	FOR REC IN CUR_PU LOOP
		v_UserID	:= REC.ID ;
		v_Pass		:= REC.PASS ;
		outIDSEIKN	:= REC.IDSEIKN ;
	END LOOP;

・DB(PLAN_USER)(一部)
名前          NULL?    型
------------- -------- -----------------
IDSEIKN                VARCHAR2(50)


以上、宜しくお願い致します。

-------------------------
yuki endo
Mail : endo@quest.co.jp
-------------------------