Sql oracle存储过程-局部变量行为神秘
这就是我处理局部变量的方式:Sql oracle存储过程-局部变量行为神秘,sql,oracle,Sql,Oracle,这就是我处理局部变量的方式: 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
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;
dbms_输出.put_行(团队_计数器| |'.| |用户名);
如果团队计数器<30且用户名为“”,则
开始
dbms_output.put_行('yuhj');
结束;
如果结束;
第二个输出未被打印!
第一个输出被打印为我所期望的“1.tuser” 这是因为您试图使用不等式运算符将字符串与长度为0的字符串进行比较 Oracle假定长度为0的字符串等效于NULL,并且不会计算不使用NULL特定条件的比较: Oracle数据库当前处理长度为的字符值 零为空。然而,这在未来可能不会继续发生 并且Oracle建议您不要处理空字符串 与空值相同 简单地说,这意味着您的IF语句应该是:
if team_counter < 30 and username is not null then
...
如果团队计数器<30且用户名不为空,则
...
作为补充说明,不需要开始。。。在dbms\u输出的周围结束。放置\u行
。由于您没有捕获任何与此调用明确相关的异常或声明其他变量等,因此没有真正的需要