PLSQL錯誤總結

一、'' is null爲true,''和null是同一個東西。spa

神經病寫法:不管vc_itemids是null仍是'',or後面的那一句都爲false,判空只能使用is null 或者 is not null。下面的vc_itemids只須要前面的判空就能夠了。3d

 

分析:code

 

 

 

 

 

2.低效的子查詢blog

神經病寫法:子查詢並無用到外面查詢的列,可是外面沒查詢一條數據,就執行一次子查詢,可是子查詢的數據都是同樣的,應寫成臨時數據。it

改善寫法:table

declare
  my_date varchar2(20);
begin
  select t1.real_date
    into my_date
    from (select '20200520' real_date from dual) t1;
  --使用上面的變量值放到where條件裏 
  SELECT *
    FROM table_a A, table_b b
   WHERE A.item1 IN ('1', '2', '5')
     and a.item2 = b.item3(+)
     and a.item6 >= my_date
     and a.item5 is null;
end;
相關文章
相關標籤/搜索