这就是我如何揭示局部变量:
team_counter number (38) := 0;
username varchar2(50) := '';
这是我在使用select into语句后尝试使用/查看其值的方法:
dbms_output.put_line(team_counter||'.'||username);
if team_counter< 30 AND username <>'' then
begin
dbms_output.put_line('yuhj');
end;
end if;
第二个输出没有打印! 第一个输出打印为'1.tuser',这是我所期待的。
答案 0 :(得分:1)
这是因为您尝试使用不等运算符将字符串与0长度字符串进行比较。
Oracle假定0个长度字符串等效于NULL,并且不会评估不使用NULL特定条件的比较。 To quote:
Oracle数据库当前处理长度为的字符值 零为空。但是,将来这可能不会继续存在 发布,Oracle建议您不要处理空字符串 和nulls一样。
简单地说这意味着你的IF语句应该是:
if team_counter < 30 and username is not null then
...
作为补充说明,begin ... end
周围不需要dbms_output.put_line
。由于您没有捕获与此调用明确相关的任何异常或声明其他变量等,因此没有实际需要。