oracle資料庫欄位NULL賦值情況處理

2021-07-24 17:08:21 字數 2244 閱讀 6940

在儲存過程中常用到字段值賦給變數的情況,此時主要會出現兩種情況

一,能查詢到記錄

記錄中字段值又分兩種情況

1、欄位有值

2、字段值為null

二、查詢不到記錄,count返回為0

--一下是**測試情況

-測試sql> select empno,sal,comm from emp where empno=7369;

empno        sal       comm

---------- ---------- ----------

7369        800

sql> declare v_empno number(6);

2  v_sal number(6);

3  v_comm number(6);

4  begin

5  select empno,sal,comm into v_empno,v_sal,v_comm from emp where empno=7369;

6  dbms_output.put_line('empno='||v_empno);

7  dbms_output.put_line('sal='||v_sal);

8  dbms_output.put_line('comm='||v_comm);

9  end;

10  /

empno=7369

sal=800

comm=

sql> declare v_empno number(6);

2  v_sal number(6);

3  v_comm number(6);

4  begin

5  select comm into v_comm from emp where empno=7369;

6  dbms_output.put_line('comm='||v_comm);

7  end;

8  /

comm=

sql> select * from emp where empno=7368;

未選定行

--未查找到記錄,直接賦值則會丟擲異常,針對這種情況,應做異常情況判斷處理

sql> declare v_empno number(6);

2  v_sal number(6);

3  v_comm number(6);

4  begin

5  select comm into v_comm from emp where empno=7368;

6  dbms_output.put_line('comm='||v_comm);

7  end;

8  /

declare v_empno number(6);

*第 1 行出現錯誤:

ora-01403: 未找到資料

ora-06512: 在 line 5

sql> declare v_comm number(6);

2  begin

3  select comm into v_comm from emp where empno=7368;

4  dbms_output.put_line('comm='||v_comm);

5  exception

6  when others then

7  dbms_output.put_line('no_date_found');

8  end;

9  /

no_date_found

pl/sql 過程已成功完成。

--處理空記錄情況

sql> declare v_comm number(6);

2  v_cnt number(6);

3  begin

4  select count(*) into v_cnt from emp where empno=7368;

5  if v_cnt > 0 then

6  select comm into v_comm from emp where empno=7368;

7  dbms_output.put_line('comm='||v_comm);

8  end if;

9  exception

10  when others then

11  dbms_output.put_line('no_date_found');

12  end;

13  /

pl/sql 過程已成功完成。

資料庫設計字段 null備註

在工作中,設計資料庫難免會出現各種缺陷,例如產生null欄位,這種缺陷有時候很有可能造成一些陷阱 例如 1.在利用not in查詢時無論在mssql還是mysql中都會產生資料庫不準確的資訊。2.大量浪費空間字段,造成資料庫的空間浪費 3.如果字元型的東西,最好設計為 字串,因為在查詢的時候 str...

資料庫欄位非空(null的缺點)

上週工作中,遇到資料庫字段是否設為空的問題。資料庫建表時,對於一些可填可不填的字段,我們盡量把他設定為非空,這種做法 1.可提高效能,2.可在很大 程度上避免空指標一類的問題。具體的好處頗多。1.節省空間。大體看上去,好像設定可以為空的時候更節省空間,但實際上,他比not null要多占用乙個bit...

資料庫 Oracle欄位橫置

補充背景需要 最近好久沒有寫文章了,主要原因因為專案試執行了,自己每天都要關注專案運 況,在穩定的時候去開發新的功能,但是在開發的時候,遇到乙個問題難倒我了。具體的原因是,有時候客戶想要的資料是一條記錄展示完,但是我們在資料庫存的時候,通常都是乙個存一條記錄。這就會有乙個問題,什麼問題呢,比方說,客...