存储过程问题,小弟不会,大家帮帮忙,着急!

kalphon 2005-08-06 07:26:27
现在我有三个表,一个设备表,一个是维修计划表,一个是设备状态表
设备表如下 状态表如下
设备名称 状态id 状态id 状态
aaa 01 01 正常
bbb 01 02 维修
ccc 02 03 报废
ddd 02
维修表如下
设备名称 维修开始日期 维修结束日期
aaa 2005-10-1 2005-10-7
bbb 2005-11-1 2005-11-3
ccc 2005-8-4 2005-8-10
ddd 2005-8-4 2005-8-10
我想自动改变设备的状态,也就是说,当设备ccc,ddd的维修结束,也就是过了8-10,自动把设备表的状态id改成01,听说要写存储过程,具体如何实现呢,请大虾们指点,谢谢了!
...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQMagicer 2005-08-07
  • 打赏
  • 举报
回复
如果是自动判断结束日期的话,我也建议使用job,每天定时转
如果定在当天24点之前,条件为datediff(day,维修结束日期,getdate())=0
如果定在第二天0点之后,条件要变为datediff(day,维修结束日期,getdate())>0
QQMagicer 2005-08-07
  • 打赏
  • 举报
回复
update 设备表
set 装态id='01'
where 状态id= '02'
and 设备名称 in
(select 设备名称 from 维修表
where datediff(day,维修结束日期,getdate())=0)
iwl 2005-08-07
  • 打赏
  • 举报
回复
用触发器也可以,应该更好
vivianfdlpw 2005-08-06
  • 打赏
  • 举报
回复
纠正以下:
update [设备表]
set [状态id]=C.[状态id]
from [设备表] A
join [维修表] B on A.[设备名称]=B.[设备名称]
join [状态表] C on 1>0
where datediff(day,B.[维修结束日期],getdate())>0 and
C.[状态]='正常'
vivianfdlpw 2005-08-06
  • 打赏
  • 举报
回复
添加作业每天执行一次
vivianfdlpw 2005-08-06
  • 打赏
  • 举报
回复
update 设备表
set 状态id=C.状态id
from 设备表 A
join 维修表 B on A.设备名称=B.设备名称
join 状态表 C on A.状态id=C.状态id
where datediff(day,B.维修结束日期,getdate())>0 and
C.状态='正常'

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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