C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■85992 / )  PL/SQLでデータが無いのにデータが返却される
□投稿者/ k3user (20回)-(2017/12/07(Thu) 15:16:53)

分類:[データベース全般] 

PL/SQLにて不可解な現象に悩まされています。
以下のようなテーブルとPL/SQLがあり
TEST_TABLEを外部から指定したパラメータで検索し、
データの有無でInsert処理を行っているのですが、
SELECTの部分でデータが無いにもかかわらず(何度もパラメータは確認しました。)
データが取得されていまいエラー処理に走ってしまいます。
「ROWVERSION」という項目名を疑ってみたのですが、関係は無いはずです。
何かまずい部分があるのでしょうか...

補足事項
・SQLを直接実行するとデータはない
・実行の度にROWVERSIONの値がインクリメントされている。(テーブル内に存在しない値)
・使用しているバージョンはORACLE12C

TEST_TABLEの定義

KONYUBMNCD                     CHAR(3) NOT NULL,
GYOSYACD                       CHAR(6) NOT NULL,
KOJINO                         CHAR(8) NOT NULL,
KEIYAKUKIKANSTR                CHAR(8) NOT NULL,
TankaCd                        CHAR(3) DEFAULT ' ',
ROWVERSION                     NUMBER(38,0) DEFAULT 0,


PL/SQL処理抜粋

wvExists			INTEGER;	
wvNewRowversion		NUMBER;			

wvExists := 1;
wvNewRowversion := NULL;

BEGIN
	SELECT ROWVERSION
	INTO   wvNewRowversion
	FROM   ItakuTankaMst
	WHERE  KonyuBmnCd      = パラメータ1
	AND    GyosyaCd        = パラメータ2
	AND    KojiNo          = パラメータ3
	AND    KeiyakuKikanStr = パラメータ4
	AND    TankaCd         = パラメータ5
	FOR UPDATE NOWAIT
	;
EXCEPTION
	WHEN NO_DATA_FOUND THEN		
		wvExists := 0;
END;

	IF wvExists = 1 THEN
		prErrMsg := '他のユーザーより登録されました。処理を中止します。' ;
		RAISE ERR_EXCLUSIVE;
	ELSE
		テストテーブルのinsert処理
	END IF;

返信 編集キー/


管理者用

- Child Tree -