user_servers中同一用户有很多条记录,如何判断哪一条先减去,哪一条后减去呢?思路:
1、用游标取出User表中的UserID
While(@@sqlstatus!=2)
begin
1)用游标取出表user_servers中该用户的一条记录的money
While(@@sqlstatus!=2)
begin
2)取出money中的money
3)求两者的差值
if(差值>0)
begin
insert log表;
end
else
begin
insert owe_log表
end
update money表;
end
end
1、用游标取出User表中的UserID
While(@@sqlstatus!=2)
begin
1)用游标取出表user_servers中该用户的一条记录的money
While(@@sqlstatus!=2)
begin
2)取出money中的money
3)求两者的差值
if(差值>0)
begin
insert log表;
end
else
begin
insert owe_log表
end
update money表;
end
end
解决方案 »
- 函数里面的SQL语句,怎样使用传入的参数作为条件表达式? 有例子不抽象,请进
- oracle中,设定varchar2长度为4000,(最大只能存4000),为什么存到1333就不行了,多一个都不行,报 ORA-01480:trailling
- PL SQL developer
- 关于9i版本sqload在两台电脑运行结果不同的困惑
- Hibernate保存Blob到Oracle中使用flush()时出错
- 关于系统表名的问题
- 菜鸟请教
- oracle 中哪个字段类型可以存储大量的字符数据?
- oracle pl/sql怎么写SP实现增量抽取
- oracle存储过程想实现一个时间区间内进行多次计算得到值
- SQL语句语法错误!!!
- [求助]这个动态 SQL ,为什么执行不了?
declare @UserId varchar
declare User_cursor cursor for
select id from User
open User_cursor
fetch User_cursor into @UserId
While(@@sqlstatus!=2)
begin
……
fetch User_cursor into @UserId
end
Close User_cursor 不过嵌套使用游标好像要注意sqlstatus的判断,忘记具体怎么弄的了,楼主可以自己琢磨一下
as
cursor userinfo is select * from user;
cursor userserv(uid nubmer) is select * from
moneycount number;
begin
for uinfo in userinfo loop
for us in userserv(uinfo.id) loop
select money into moneycount from money where id=uinfo.id;
if moneycount>us.server_money then
update money set money=money-us.server_money where id=uinfo.id;
insert into log
end if;
if moneycount<us.server_money and moneycount<>0 then
update money set money=0 where id=uinfo.id
insert into owe_log values(uinfo.id,us.server_money-moneycount,sysdate);
else
insert into owe_log values(uinfo.id,us.server_money-moneycount,sysdate);
end if;
end loop;
end loop;
end;