通常情況下,你會不會打印任何東西沉綿該記錄這樣做
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
,沒有t 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,則意味着在執行匿名PL/SQL塊之前運行
SQL> set serveroutput on;
。