[解決済み] pl sql %NOTFOUND
2022-02-15 01:04:48
質問
このコードの一部が動作しないのはなぜでしょうか。私はサプライヤーを持っていません
id=1
をテーブルの中に入れています。
DECLARE
VAR SUPP_NM VARCHAR(100);
VAR_SUPP_ID NUMBER := 1;
WHILE_VAR CHAR := 'Y';
BEGIN
SELECT SUPP_NM
INTO VAR_SUPP_NM
FROM TEST.SUPPLIER
WHERE SUPP_ID = VAR_SUPP_ID;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('SQL DATA NOT FOUND');
ELSIF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('DATA FOUND');
END IF;
END;
Toad で 01403 エラーが発生するが、処理されない。
sql%notfound
.
なぜ
sql%notfound
は機能していますか?
解決方法は?
をキャッチするために
NO_DATA_FOUND
を追加して、次のようにコードを書き直します。
exception
セクションを作成します。
DECLARE
VAR_SUPP_NM VARCHAR2(100);
VAR_SUPP_ID NUMBER := 1;
WHILE_VAR CHAR := 'Y';
BEGIN
SELECT SUPP_NM
INTO VAR_SUPP_NM
FROM TEST.SUPPLIER
WHERE SUPP_ID = VAR_SUPP_ID;
DBMS_OUTPUT.PUT_LINE('DATA FOUND');
exception
when no_data_found
then DBMS_OUTPUT.PUT_LINE('SQL DATA NOT FOUND');
END;
チェック
SQL%FOUND
または
SQL%NOTFOUND
の場合は意味がありません。
select into
なぜなら、select 文が行を返さない場合、常に
no_data_found
ただし、select文が集約関数を呼び出す場合は、行が選択されていなければ常にデータまたはnullを返します。
を使用しないでください。
varchar
データ型を使用します。
varchar2
のデータ型を使用します。
関連
-
OracleインストールTNS_ADMIN環境変数設定リファレンス
-
Oracle Dbeaver ストアドプロシージャの構文説明
-
ODBC sqlserverデータソースに接続するためのOracleの詳細な手順
-
[解決済み] エラー ORA-01804 のテキストを取得しようとしているときにエラーが発生しました。
-
[解決済み] ORA-00917: カンマ欠落エラー [終了しました]。
-
[解決済み] ORA-12545: ターゲットホストまたはオブジェクトが Mac に存在しないため、接続に失敗しました - SQLPLUS
-
[解決済み] ORA-00980 PLSQL で同義語の翻訳が有効でなくなった。
-
[解決済み] PLS-00382: 式が不正です。
-
[解決済み] Oracleで変数を宣言して表示する方法
-
[解決済み] ORA-04063: パッケージ本体 "WB_PROD.PLOG" にエラーがあります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オラクル表領域拡張の詳細
-
Oracleの表領域と権限を徹底解説
-
Oracleデッドロック検出クエリとその処理
-
PLSQL14ダウンロードとインストールチュートリアル
-
オラクルのファジー・クエリーとその使い方
-
オラクルユーザー作成プロセスの説明
-
[解決済み] エラーを取得する - ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
-
[解決済み] ORA-00900: 無効な SQL 文 - Oracle 10g のプロシージャを実行するとき
-
[解決済み] PLS-00302: component must be declared when it exists?」と表示されます。
-
[解決済み] PLS-00382: 式が不正です。