Re: [SQL ] 關於procedure中select結果有可能會空ꨠ…
就以oracle為例:
SELECT DECODE(num,null,0,num)
into v_c
FROM table ...
有例外就用Exception囉!
※ 引述《diamondking (天劍流星)》之銘言:
: 常常遇到一個情形,
: 當想執行一小段的sql,但select出來的結果為空值,就會出錯…
: 例如(以oracle為例):
: declare
: v_c int :=0;
: begin
: select num into v_c from table where.....;
: ....
: ....
: end;
: 如果那行select找不到任何資料,則這一小段sql就會出錯…。
: 通常這樣的情形,大家都如何解決呢?
: 目前想到的做法有幾種,不過感覺應該有更好的方法:
: 1、先select count(*) into v_a ......; if v_a >0 then .....
: 但這樣很蠢,同樣的sql要再copy一次,只為了先判斷是不是select得出資料。
: 2、把那段sql,再加上「union select 0 from dual」,讓他一定找得到資料。
: (至少一定有「0」這筆資料)
: 3、寫例外處理的sql,但是這不是個好方法,因為一產生例外,就必須跳出了,
: 有時候是希望他繼續做別的事。
: 希望大家討論討論
: 另外各家資料庫,可能有不同的解法?( sql server, mysql...等等)
--
有一點特別的,就是那一點特別的好.
http://blog.pixnet.net/hsinichi
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.111.113
※ 編輯: Hsinichi 來自: 61.62.111.113 (08/28 20:50)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 6 篇):