完全一樣,沒有任何維護。但有幾種方法可以僞造它:
如果您只需要做一件事,那麼在隱式遊標內部執行該操作即可確認您的值是否存在。
for i in (some_query) loop
do_something;
end loop;
您還可以在這裏設置一個值,並在if
for i in (some_query) loop
result := True;
end loop;
if result then
do_something;
else
do_something_else;
end if;
使用它,或者你可以使用顯式遊標,趕上no_data_found
錯誤會引發
declare
cursor c_blah is
select my_value
from my_table
where id = my_id
;
my_value varchar2(4000);
begin
open c_blah(my_id);
fetch c_blah into my_value;
close c_blah;
do_something;
exception when no_data_found then
do_something_else;
end;
來源
2012-02-15 21:40:24
Ben
解釋有關rownum = 1的部分?這是否會提高查詢的速度,否則可能會計數一百萬行?或者它只是獲得1或0的布爾值的一個好方法? – Buttons840 2012-02-16 17:42:08
@ Buttons840正確。如果您正在搜索非關鍵字段的存在,那麼在找到滿足where子句的第一條記錄時關閉該查詢。代碼邏輯正在檢查0的情況,所以不使用實際的計數。 – tawman 2012-02-16 20:57:33
@ Buttons840正是!我的答案從左至右進行評估。你的OR的第一部分是正確的;) – tawman 2012-02-16 21:10:49