關於Oracle中的nvl另類使用

来源:互联网 发布:微店商品怎么在淘宝 编辑:程序博客网 时间:2024/04/30 01:12

在編寫Oracle后端程式時,經常會用到nvl函數,用來轉換那些為null的變量或欄位.

一般的使用方法為:

 

v_name := nvl(v_name,'N/A');

 

同時,我們經常也會使用如下的語法結構來查詢資料.

 

Begin

   select name into v_name from tab_name where ...

Exception

   when No_data_found then

        v_name := 'N/A';

End;

 

實際上,我們可以將上面的語法結構用nvl函數來實現.

如:

select nvl((select name from tab_name where ...),'N/A') Into v_name From dual;

 

這里如果nvl中第一個參數查詢結果為No_data_found,則就等同於null值,所以就會返回第二個參數.

這種寫法只能使用在select查詢中,不可以直接使用賦值,如:

v_name := nvl((select name from tab_name where ...),'N/A');

這樣就是不可以編譯通過的.

 

以上,記錄於此.以供查閱.