max(syrq)
如果满足条件的所有的记录的syrq值都是null,那么max(syrq) 的值也是null
如果满足条件的所有的记录的syrq值都是null,那么max(syrq) 的值也是null
解决方案 »
- ora创建数据库连接
- oracle如何接收大于4000的字符?
- 出现ORA-00927:缺少等号的警告,请帮忙解决
- 我这个函数怎么编译不成功?
- oracle9i登陆问题以normal不能登陆,以sysdba能登陆。
- 求助:如何列出表中的所有字段
- 小问题。。。
- ORA-00604: error occurred at recursive SQL level 1和ORA-00018: maximum number of sessions exceeded 是什么错误怎么解决 谢谢
- 怎样才能在程序中(java,jsp)中对oracle数据库中的数据表进行备份?谢谢帮忙
- ORACLE SQL求帮助--2015第一帖
- 冷备份后,备份的Redo01.log文件损坏,该如何恢复
- 如何将不同条件的查询结果并列?
上面这句中的where sbid = id 其中id是一个变量,是不是要用引号引起来?是不是改成下面这种?
where sbid = ''' || id || '''
另外,
EXIT WHEN c_Students%NOTFOUND;
应该写在
FETCH c_Students INTO id;
之后吧,先判断游标是否到底,再执行LOOP内的逻辑.
还有,缺少COMMIT.
id VARCHAR2(32);
Name VARCHAR2(100);
sdate varchar2(20);
ddate date;
V_Count binary_integer; --新加入 CURSOR c_Students IS
select a.sbid
from sb_register_info_m a, sb_logicequipment b
where a.ljsbid = b.id
and b.deleteflag = '0'
and b.sblxid like '3%'
order by a.sbid;
BEGIN OPEN c_Students;
LOOP
FETCH c_Students
INTO id;
select Count(*)
into V_Count
from sy_bg_m
where sbid = id
and bglb >= 'a'
and bglb <= 'z'; --新加入
If V_Count = 1 Then
--新加入
select max(syrq) syrq
into sdate
from sy_bg_m
where sbid = id
and bglb >= 'a'
and bglb <= 'z';
if sdate is null then
sdate := '2004-12-31';
end if;
sdate := substr(sdate, 1, 10);
insert into T_SBSJ
(S_SBID, D_SYSJ)
VALUES
(id, TO_DATE(sdate, 'YYYY-MM-DD'));
End if; --新加入
EXIT WHEN c_Students%NOTFOUND;
END LOOP;
CLOSE c_Students;
END;