[pgsql-jp: 28739] OCIBindByNameで -1 の指定について

Yuki Endo endo @ quest.co.jp
2003年 1月 23日 (木) 13:22:59 JST


はじめまして、遠藤と申します。
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
-------------------------



pgsql-jp メーリングリストの案内