このバージョンでは:
SELECT COUNT(*) INTO isFound FROM MyTable WHERE USERNAME =userName AND ROWNUM =1;
プレ>... テーブルの
USERNAME
列はそれ自体と比較されるため、常に一致します。それをローカル変数と比較していません。これを行うには、変数に列に別の名前を付ける必要があります:isFound NUMBER を宣言します。 localUserName VARCHAR2(30);begin isFound :=0;ユーザー名:='aaaaaa'; SELECT COUNT(*) INTO isFound FROM MyTable WHERE USERNAME =localUserName AND ROWNUM =1; IF isFound> 0 THEN dbms_output.put_line('見つかった'); ELSE dbms_output.put_line('見つかりません'); END IF;終了;コード> プレ>
または、David Aldridge が提案するように、ラベルを使用してローカル変数をテーブル列から区別します。
<
プレ>>isFound NUMBER を宣言します。 userName MyTable.USERNAME%TYPE;begin isFound :=0;ユーザー名:='aaaaaa'; SELECT COUNT(*) INTO isFound FROM MyTable WHERE USERNAME =local.userName AND ROWNUM =1;... 名前付きブロックでもそのアプローチを使用できます。これが関数内にある場合は、ローカル変数を
function_name.variable_name
として参照できます .これは無名ブロックなので、ラベルはfunction_name
と同じ役割を果たしますドキュメントには、名前解決に関するセクション があります。 .