plsql中的if
FOR m in 1..10 loop
.............................
end loop
等等
2. 在plsql中,if then緊接著一個if then中間沒有執行語句怎麼理解
凡是這種if的嵌套,表示要滿足上層的if條件才能進入,比如說
if A then
if B then
if C then
end if
end if
end if
就是滿足了A才能進入if B的判斷,滿足了B(或者說滿足A和B)才能進入C的判斷。同樣的,你的代碼中只有滿足了flag_missed_target=0的判斷,才能進入▲x>0的判斷,下面的都是一樣的。當然,如果是
if A then
XXX...
if B then
end if
end if
表示滿足A之後先執行XXX,之後才進行if B判斷,這個XXX是根據你的需求寫的,不一事實上非得存在。
3. 在PL/SQL中怎樣判斷查詢的結果是否為空
1、只有一個查詢結果的查詢:
select min(to_char(b.arrive_date,'yyyymmdd')||lpad(b.arrive_time,6,0)||c.xs_mc)
into vtmpstr
from tb_evt_bag_mail_rela a, tb_evt_route_bag_rela b, tb_jgjm c
where a.mail_num = vmail_num
。。。。。。
對這個查詢,只需判斷變數vtmpstr是否為空就可以了,即:
if vtmpstr is null then
注意:查詢中用聚合函數才可以這樣用,如果直接取一個值,又沒有結果,則會出錯跳出模塊,跑到例外處理那兒去了,如下面語句:
select city_name into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);
如果沒有查詢結果,或者多個查詢結果,都會出錯跑到例外處理那兒,所以應該寫成下面格式:
select min(city_name) into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);
2、游標的查詢結果:
OPEN cur_get_trans(vin_date,vmail_num);
LOOP
FETCH cur_get_trans
INTO vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
--判斷查詢結果
if cur_get_trans%found then
。。。
else
。。。
end if;
或者退出循環處理,即:
OPEN cur_get_trans(vin_date,vmail_num);
LOOP
FETCH cur_get_trans
INTO vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
EXIT WHEN cur_get_mail%NOTFOUND;
--處理有結果的查詢
END LOOP;
--處理無結果的查詢
--注意,有查詢結果處理完畢也會執行到此處,所以要區分上面是否進行過有結果的處理。
CLOSE cur_get_trans;
===================================================================
附:
1、游標相關的4個語句:
declare(聲明)、open(打開)、fetch(取數)、close(關閉)。
2、游標相關的4個屬性:%isopen, %found, %notfound,和 %rowcount
(1)%Isopen:布爾型,用於檢測游標是否已經打開。如果游標已經打開,返回true,否則返回false。
(2)%found:布爾型,判斷最近一次執行fetch語句後,是否從緩沖區中提取到數據,返回true,否則返回false。
(3)%notfound:與%found相反。
(4)%rowcount:數值型,返回到目前為止已經從游標緩沖區提取數據的行數。在fetch語句沒有執行之前,該屬性值為0。
使用隱式游標%found屬性,sql%found;
使用顯示游標%found屬性,cur_get_trans%found。
4. plsql怎麼使用if語句達成多表的條件搜索,共同顯示
直接在where條件裡面篩選不行嗎?
c_serviceentity與c_circuit時條件加上ABSTRACTENTITY_ID=108
c_serviceentity與c_port時條件加上ABSTRACTENTITY_ID=105;
如果一定要用IF,可以定義個變數
if 變數=108 。。。
c_serviceentity與c_circuit時條件加上ABSTRACTENTITY_ID=變數。。
...
...
..
5. sql 中的if 判斷 語句應該怎麼寫
sql中的if語句寫法和java中差不多,都是先定義變數再使用變數進行判斷。由於你的提問不是很清晰,我就自己的看法解答下你的問題:
如果你指的是查詢條件的話:select
需要查詢的欄位,若為所有欄位這里是*
from
表名
where
查詢條件例如name='llo'
and
age='50';
如果你指的是sql代碼的話:
變數名
Number:=0;
變數名
Number:=0;Num為屬性
Select
欄位名
Into
變數名
from
表名
就不多寫了,條件同查詢條件結束時要有;號注意英文字元,這樣會把查詢到的欄位值賦給變數,當使用if語句進行判斷時,取到變數名進行判斷就好。if判斷語句同:if(變數名!=0)
then
返回true時需要運行的語句
end
if;
--為注釋
6. plsql編程判斷語句怎麼
if ................ then
....................
elsif ---- then
..............
end if;