oracle數據庫存儲過程中NO_DATA_FOUND不起作用解決


oracle數據庫存儲過程中NO_DATA_FOUND不起作用

 
1.首先創建一個表lengzijiantest,表中只有一個字段f_id
?
1
2
3
4
5
[cpp]
CREATE TABLE LENGZIJIANTEST 
   F_ID  NUMBER                                  NOT NULL 
)

 

 
2.插入一條數據
?
1
2
[cpp]
insert into lengzijiantest values (1)

 

 
3.現在表里面只有一條數據,值為1;
4.寫入如下命令
?
1
2
3
4
5
6
7
8
9
10
11
12
13
[sql]
DECLARE 
    v_tmp   NUMBER := 0; 
BEGIN 
    SELECT f_id 
      INTO v_tmp 
      FROM lengzijiantest 
     WHERE f_id = 2; 
EXCEPTION 
    WHEN NO_DATA_FOUND 
    THEN 
       DBMS_OUTPUT.put_line ( '找不到數據' ); 
END ;

 

 
5.因為數據庫中只有1的數據,該條語句會打印出“找不到數據”;如果把sql寫成如下方式,則不會打印“找不到數據”
?
1
2
3
4
5
6
7
8
9
10
11
12
13
[sql]
DECLARE 
    v_tmp   NUMBER := 0; 
BEGIN 
    SELECT min (f_id) 
      INTO v_tmp 
      FROM lengzijiantest 
     WHERE f_id = 2; 
EXCEPTION 
    WHEN NO_DATA_FOUND 
    THEN 
       DBMS_OUTPUT.put_line ( '找不到數據' ); 
END ;

 

 
6.具體原因是由於在sql中使用了聚合函數,當使用聚合函數時,NO_DATA_FOUND是不起作用的,在這一點上也吃了小虧,不過問題不大,在此記錄下問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM