一个关于oracle数据库存储过程的问题
发布网友
发布时间:2022-04-09 22:51
我来回答
共2个回答
热心网友
时间:2022-04-10 00:21
varchar类型的比较是每一位进行对比的就是说,多位字符串的话首先比较第一个字符,第一个字符一样时再比较第二个字符,否则直接返回第一个字符比较的结果。
例如 2>11 。
你第一句语句 between '3'-'10',其实'3'是大于'10'的
而你的第二个语句,3 - 10 系统会认为是数字,从而把 to_char(offtime,'hh24')的结果转换为数字进行比较
使用beteween '0' -'23'时,你会发现 所有0-23之间的字符都满足这种字符串的比较。
热心网友
时间:2022-04-10 01:39
create or replace procere testtime(st in number, et in number,
shuliang out number) as
begin
select count(onlon)
into shuliang
from t_businesshistory_1
where to_number(to_char(offtime, 'hh24')) between st and et;
end;