SQL Server 里需要定时执行某个存储过程,存储过程怎么写? 100

SQLServer里需要定时执行某个存储过程,存储过程怎么写?数据库:test表名:biaoidmoney1timemoney2money3money416002010-... SQL Server 里需要定时执行某个存储过程,存储过程怎么写?

数据库:test
表名:biao

id money1 time money2 money3 money4
1 600 2010-1-10 100
2 1200 2010-1-12 200

存储过程是:if DateDiff("d",time,now)<=30 and DateDiff("d",time,now)>0
money3 = money1*0.3
if DateDiff("d",time,now)<=60 and DateDiff("d",time,now)>30
money3 = money1*0.6
if DateDiff("d",time,now)<=365 and DateDiff("d",time,now)>60
money3 = money1*0.9
if DateDiff("d",time,now)>365
money3 = money1

if DateDiff("d",time,now)<=30 and DateDiff("d",time,now)>0
money4 = money1*0.3-money2
if DateDiff("d",time,now)<=60 and DateDiff("d",time,now)>30
money4 = money1*0.6-money2
if DateDiff("d",time,now)<=365 and DateDiff("d",time,now)>60
money4 = money1*0.9-money2
if DateDiff("d",time,now)>365
money4 = money1-money2

时间是每天的01:00执行一次
存储过程的SQL怎么写???
展开
 我来答
谭银盛山彤
2020-05-04 · TA获得超过3539个赞
知道大有可为答主
回答量:3051
采纳率:30%
帮助的人:166万
展开全部
create
procedure
pro_test
as
declare
@time
datetime,
@id
int,
@difftime
int
declare
cursor_time
cursor
for
select
id,time
from
test_table
-----(your
table_name)
open
cursor_time
fetch
cursor_time
into
@id,@time
begin
while
@@fetch_status=0
begin
select
@difftime=DateDiff(dd,@time,getdate())
if
@difftime>0
and
@difftime<=30
begin
update
test_table
set
money3
=
money1*0.3,money4
=
(money1*0.3-money2)
where
id=@id
end
if
@difftime>30
and
@difftime<=60
begin
update
test_table
set
money3
=
money1*0.6,money4
=
(money1*0.6-money2)
where
id=@id
end
if
@difftime>60
and
@difftime<=365
begin
update
test_table
set
money3
=
money1*0.9,
money4
=
(money1*0.9-money2)
where
id=@id
end
if
@difftime>365
begin
update
test_table
set
money3
=
money1
,money4
=
(money1-money2)
where
id=@id
end
end
end
把存储过程里的表明改成你的table
创建好这个存储过程后,然后在企业管理器里,展开“管理”-“sql
server
代理”-“作业”
新建一个作业。
在“步骤”里选择你要执行的库,然后
在代码栏写上‘exec
pro_test’,“调度”里设置下时间,就可以了。
不明白的地方hi我。
伊人萦香
2010-01-26 · TA获得超过255个赞
知道答主
回答量:74
采纳率:0%
帮助的人:0
展开全部
create procedure pro_test
as
declare @time datetime,
@id int,
@difftime int
declare cursor_time cursor for select id,time from test_table -----(your table_name)
open cursor_time
fetch cursor_time into @id,@time

begin
while @@fetch_status=0
begin
select @difftime=DateDiff(dd,@time,getdate())
if @difftime>0 and @difftime<=30 begin
update test_table set money3 = money1*0.3,money4 = (money1*0.3-money2) where id=@id
end
if @difftime>30 and @difftime<=60 begin
update test_table set money3 = money1*0.6,money4 = (money1*0.6-money2) where id=@id
end
if @difftime>60 and @difftime<=365 begin
update test_table set money3 = money1*0.9, money4 = (money1*0.9-money2) where id=@id
end
if @difftime>365 begin
update test_table set money3 = money1 ,money4 = (money1-money2) where id=@id
end
end
end

把存储过程里的表明改成你的table
创建好这个存储过程后,然后在企业管理器里,展开“管理”-“sql server 代理”-“作业” 新建一个作业。
在“步骤”里选择你要执行的库,然后 在代码栏写上‘exec pro_test’,“调度”里设置下时间,就可以了。

不明白的地方hi我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
2015-07-05 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2829万
展开全部
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工作详细描述内容];[ 创建作业分类的步骤:SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件如果要执行存储过程,填exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]]->确定(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duyueping
2010-01-26 · TA获得超过374个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:136万
展开全部
在sql管理器中,打开sqlserver代理,选择作业,--》新增作业。
根据步骤,输入执行脚本,设置执行间隔时间等,启用就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7dec46fd3
2010-01-26
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
可以用windows自带的任务执行计划,在附件-系统工具中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式