第一次接触存储过程,求教!(在线等,急)
我要写个存储过程,目的是每天晚上11点查看一个表(例如:accuse表)里的所有记录的一个字段retime(datetime类型)的值,让这个值跟当前系统时间相比较,如果小于当前时间的话,就取出该条记录的ID号的值和retime的值,然后将这2个值添加到另外一个表里(例如:order表)的accid字段和settime字段里,这里settime字段值是retime的值变换后的值(例如:retime值为2005-02-01 11:48:56,在settime字段里就显示为2005-02-05 11:48:56,变成当天的第二天的日期了,时间不变),如果在accuse表里查到的ID号在order表里存在了,就根据ID号更新order表里的这条记录。
小弟我第一次写,请各位高手帮帮忙!
问题点数:50、回复次数:5Top
1 楼zjcxc(邹建)回复于 2005-02-04 11:57:53 得分 50
这个只用存储过程无法完成,应该和作业配合做定时处理。Top
2 楼xluzhong(Ralph)回复于 2005-02-04 12:02:16 得分 0
要用作业调度执行存储过程Top
3 楼zjcxc(邹建)回复于 2005-02-04 12:03:08 得分 0
--处理的存储过程这样写(只加一天,楼主的示例加了4天)
create proc p_processes
as
--更新满足条件并且已经在 order 中存在的记录
update a set settime=dateadd(day,1,b.retime)
from [order] a,[accuse] b
where a.accid=b.id and b.retime<getdate()
--插入满足条件并且在 order 中不存在的记录
insert [order](accid,settime)
select id,dateadd(day,1,b.retime)
from [accuse] b
where retime<getdate()
and not exists(
select * from [order] where accid=b.id)
go
Top
4 楼zjcxc(邹建)回复于 2005-02-04 12:03:39 得分 0
然后创建一个作业定时调用上述存储过程
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
Top
5 楼zq9251(阿妖)回复于 2005-02-04 13:36:46 得分 0
to :zjcxc(邹建) ,谢谢你的方法,收益非浅。Top




