本文转载自
u012820258
查看原文
2016-05-17
1430
select/
int
select into 為空和多個值:
1、異常處理法
將
select ... into ............;
的地方改寫成:
begin
select ... into ............;
exception
when no_data_found then
.......
end;
2、還有一種方法是利用游標處理
select ... into ............;
這樣的語句。比較麻煩,主要是利用游標可以返回%notfound的特性。
3、巧用聚合函數處理
說明:使用select...into語句時,如果查詢返回的數據不是1行,就會報no_data_found或者to_many_rows兩種異常。
案例:根據部門號,查詢部門名稱。
處理方法:巧用聚合函數處理
DECLARE
v_dname dept.dname%TYPE;
BEGIN
SELECT MAX(dept.dname) INTO v_dname
FROM dept WHERE deptno=90;
IF(v_dname IS NULL)THEN
dbms_output.put_line('此部門不存在!');
ELSE
dbms_output.put_line(v_dname);
END IF;
END;
說明:利用聚合函數一定會返回結果的特點, 避免了使用select...into語句容易拋出異常的問題。