VV_LIST:='DSSSFDFDSFDS';
IF(VV_LIST <>'')THEN
DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
ELSE
DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
END IF;
结果却打印了BBBBBBBBBBBBBBBBBBBBBBBB
IF ('' IS NULL) THEN
dbms_output.put_line(''''' is null');
END IF;
输出:'' is null
这说明,在oracle pl/sql里,把''当成null处理了
Oracle中的空应该用的是null,非空就是not null
for example:
SQL> set serveroutput on SQL> declare 2 str varchar(20):=; 3 begin 4 if str<> then 5 dbms_output.put_line(); 6 else 7 dbms_output.put_line(); 8 end if; 9 end; 10 / is null PL/SQL procedure successfully completed.
SQL code
所以可以这么做:SQL> set serveroutput on SQL> declare 2 str varchar(20):=; 3 begin 4 if str is not null then 5 dbms_output.put_line(); 6 else 7 dbms_output.put_line(); 8 end if; 9 end; 10 / is not null PL/SQL procedure successfully completed.
select
st.koyu_zaisan_no
,st.koyu_zaisan_edaban
,st.shutoku_nendo --?異動年度
,st.shutokubi --?異動日
,st.kaikei
,'会計名' --?
,st.shukanka --?
,'KANJYO_KAMOKU_MEISHO' --?
,'金額'
,'err_no' --?
,'err_naiyo' --?
,'0' csv_type --?
from SHISAN_TAB st
where trim(nvl(st.chiku_cd,'')) || 'A' ='A'
or trim(nvl(st.chimoku,'')) || 'B' ='B'