plsql 中关于不等于号的有关问题

plsql中关于不等于号的问题今天遇到一个这样的问题。V_SYSTEM_CORD VARCHAR2(320)我首先定义了一个这样的变

plsql 中关于不等于号的问题
今天遇到一个这样的问题。V_SYSTEM_CORD VARCHAR2(320)我首先定义了一个这样的变量。
  V_SYSTEM_CORD := '';
  IF recFSQLZAIKO.STOCK_PLANT_CD = 'HK' THEN
  IF recFSQLZAIKO.COMPANY_CD = 'FS' THEN
  V_SYSTEM_CORD := 'S';
  END IF;
  END IF;
  IF V_SYSTEM_CORD <> 'S' THEN
  V_SYSTEM_CORD := 'Q';
  END IF;
注:recFSQLZAIKO为cursor。

出现的问题是,变量V_SYSTEM_CORD <> 'S' 不起作用怎么也是false。
不知道我哪写错了,请大家帮看一下

[解决办法]
在PL/SQL中单步跟踪一下,就知道了
[解决办法]

SQL code
declare V_SYSTEM_CORD VARCHAR2(320);begin V_SYSTEM_CORD:='S';IF V_SYSTEM_CORD <> 'S' THEN  V_SYSTEM_CORD := 'Q';  END IF;  dbms_output.put_line(V_SYSTEM_CORD);end;
[解决办法]
输出来看看
exec DBMS_OUTPUT.PUT_LINE (V_SYSTEM_CORD);
[解决办法]
IF V_SYSTEM_CORD <> 'S' THEN
改成 IF V_SYSTEM_CORD is null THEN
这里你的变量不为'S'的时候是空值,不能用不等号来比较
[解决办法]
遇到过类似问题, V_SYSTEM_CORD := ''; 实际值是null
最后像4#那样解决的

[解决办法]
探讨
IF V_SYSTEM_CORD <> 'S' THEN
改成 IF V_SYSTEM_CORD is null THEN
这里你的变量不为'S'的时候是空值,不能用不等号来比较

[解决办法]


declare
V_SYSTEM_CORD varchar2(30) := '';
begin

IF V_SYSTEM_CORD <> 'S' THEN
V_SYSTEM_CORD := 'Q';
dbms_output.put_line(v_system_cord);
END IF;
  
end;

oracle中,''就是为null;

demo:
drop table tt;
create table tt(id int) ;
insert into tt select '' from dual;
insert into tt select 1 from dual;
commit;
select * from tt
where id is null;