通常、あなたは次のようなことをします
DECLARE
l_count PLS_INTEGER;
BEGIN
SELECT COUNT(*)
INTO l_count
FROM employee
WHERE name = 'chuck'
AND rownum = 1;
IF( l_count = 1 )
THEN
dbms_output.put_line( 'found' );
ELSE
dbms_output.put_line( 'not found' );
END IF;
END;
明示カーソルを本当に使用したい場合は、フェッチされた行数を判別するの<<cursor_name>>%rowcount
ではなく、をチェックする必要があります。sql%rowcount
明示カーソルを使用する場合は、カーソルを閉じるように注意する必要もあります。テーブル定義や使用しているデータを投稿しなかったので、例としてスキーマのEMP
テーブルを使用しますSCOTT
SQL> ed
Wrote file afiedt.buf
1 DECLARE
2 v_emp emp%ROWTYPE;
3 CURSOR c_emp IS
4 SELECT * FROM emp WHERE ename='SMITH';
5 BEGIN
6 OPEN c_emp;
7 FETCH c_emp INTO v_emp;
8 IF c_emp%ROWCOUNT=1 THEN
9 DBMS_OUTPUT.PUT_LINE('found');
10 ELSE
11 DBMS_OUTPUT.PUT_LINE(TO_CHAR('not found'));
12 END IF;
13 CLOSE c_emp;
14* END;
SQL> /
found
PL/SQL procedure successfully completed.
また、どのアプローチを使用する場合でも、からの出力をDBMS_OUTPUT
表示する場合は、使用しているツールで出力を有効にする必要があることに注意してください。SQL * Plusを使用している場合、それは実行を意味します
SQL> set serveroutput on;
匿名PL/SQLブロックを実行する前。