2015-09-30 143 views
1

我操作我的数据到我需要使用视图的格式,现在我有一个简单的插入查询,写数据到表:简单插入查询

insert into mytable 
select * from myview 
where 
(myview.[date] > (select max([date]) from mytable)) 
and 
(myview.[date] < getdate()) 

我d喜欢这样每天自动运行。我对此有点新,但我的理解是我需要使用存储过程。但我不确定如何在我的存储过程中执行此代码。当我创建一个新的存储过程,我给这个模板:

CREATE PROCEDURE [dbo].[Update] 
    @param1 int = 0, 
    @param2 int 
AS 
    SELECT @param1, @param2 
RETURN 0 

有人可以帮助我了解如何从查询桥接到存储过程?

+0

首先,我不会建议在表中选择*,因为列表的数量可能会在源表中更改,而不会在目标表中更改。因此,在你的插入中更像这样:'insert into mytable(col1,col2,col3)从myview中选择col1,col2,col3其中......'也不需要为此创建一个过程... a简单的SQL Job和一项任务就足够了。 – ewahner

回答

2

运行此操作,它将在sql服务器中创建一个名为the_name_of_your_sproc的存储过程。一旦你创建的程序

CREATE PROCEDURE dbo.Upload_data 
AS 
BEGIN 
    SET NOCOUNT ON; 

    insert into mytable 
    select * from myview 
    where 
    (myview.[date] > (select max([date]) from mytable)) 
    and 
    (myview.[date] < getdate()) 

END 

,每天创造它调用这个程序SQL代理作业:

CREATE PROCEDURE [dbo].[the_name_of_your_sproc] 
AS 
    insert into mytable 
    select * from myview 
    where 
    (myview.[date] > (select max([date]) from mytable)) 
    and 
    (myview.[date] < getdate()) 
2

过程定义是那样简单。