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怎么写??? 展开
数据库: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怎么写??? 展开
展开全部
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我。
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我。
展开全部
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我。
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我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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应用程序系统日志] ->确定。
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工作详细描述内容];[ 创建作业分类的步骤:SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件如果要执行存储过程,填exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]]->确定(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在sql管理器中,打开sqlserver代理,选择作业,--》新增作业。
根据步骤,输入执行脚本,设置执行间隔时间等,启用就可以了
根据步骤,输入执行脚本,设置执行间隔时间等,启用就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用windows自带的任务执行计划,在附件-系统工具中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |