求教!送分了!50分

sunnylgj 2005-10-17 10:48:52
有两个表A、B,字段名是一样的。现在需要把第一个表的第一条记录(不知道具体的值)插入到第二个表中,然后删除第一表中的这条记录。这样第一个表中原来是第二条记录就变成了第一条记录。照此下去做10次循环。最好用oracle里的pl/sql存储过程写。
...全文
334 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyi8903 2005-10-17
  • 打赏
  • 举报
回复
你可以用dbms_job包来实现的.
sunnylgj 2005-10-17
  • 打赏
  • 举报
回复
师兄,给个指点吧。马上送分给你。
sunnylgj 2005-10-17
  • 打赏
  • 举报
回复
每小时执行一次也行,拜托了
sunnylgj 2005-10-17
  • 打赏
  • 举报
回复
是在每天的早上8:00到下午的19:00之间每两小时执行一次,应该怎么写呢?
sasacat 2005-10-17
  • 打赏
  • 举报
回复
是一直不停地执行还是一个小时执行一次,还是早晚各执行一次?...

还是你自己去执行,但只有在这个时段才删除和插入?
sunnylgj 2005-10-17
  • 打赏
  • 举报
回复
两位师兄,如果我想在每天的早上8:00到下午的19:00执行这个存储过程应当加什么样的if语句?
sasacat 2005-10-17
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE adddata (a VARCHAR2, b VARCHAR2)
AS
BEGIN
insert into b select * from a where rownom <=10;
delete from a where rownum <= 10;
commit;
END;
/
qiaozhiwei 2005-10-17
  • 打赏
  • 举报
回复
不明白你的第一条记录是什么意思,
INSERT INTO B
SELECT * FROM A WHERE ROWNUM < 11;

DELETE * FROM A WHERE ROWNUM <11;
sunnylgj 2005-10-17
  • 打赏
  • 举报
回复
我的意思是每天的早上8:00到下午的19:00之间这个“判断”应该怎样写,我的代码是这样写的,
if((TO_date('9:00:00','HH24:MI:SS')<=to_date(sysdate,'HH24:MI:SS')) or (to_date(sysdate,'HH24:MI:SS')<=TO_date('19:00:00','HH24:MI:SS')))。但是报错了,估计是to_date或者to_char错了,但是不知道具体该怎么写。
bzszp 2005-10-17
  • 打赏
  • 举报
回复
创建存储过程:
CREATE OR REPLACE PROCEDURE adddata
AS
BEGIN
insert into b select * from a where rownom <=10;
delete from a where rownum <= 10;
commit;
END;
/
执行:
exec adddata;
每天8:00定时执行的话,创建job:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
'adddata;',
SYSDATE, 'trunc(SYSDATE) +1+ 8/24');
commit;
end;
/

OK!
zhangivan 2005-10-17
  • 打赏
  • 举报
回复
为什么procedure创建成功却没有结果那
zhangivan 2005-10-17
  • 打赏
  • 举报
回复
班组,‘傻傻猫’的语句你试过吗,有没有问题

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧