2015-09-25 60 views
0

我有一个存储过程,我将3个参数传递给该表,并将该表中的所有内容导出,我们将其称为dbo.myFinalTable。我想达到两个目的:使用新数据更新存储过程中的表

任务#1:

我需要追加的数据,当我再次与我传递任何参数执行过程。

我试着在我的最终表创建结束时添加这个,但总行数保持不变。有什么要做的?

IF (EXISTS (SELECT * 
      FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_SCHEMA = 'myDatabase' 
       AND TABLE_NAME = 'dbo.myFinalTable')) 
BEGIN 
    INSERT INTO dbo.myFinalTable 
     SELECT 
      someValues 
     FROM #tempInWhichIcalulate 
     ORDER BY someOtherStuff 
END 

任务#2:

我执行这样的:

execute [myStoredProcedure] 'someString', '123', '2013-03-14' 

我希望查询上面仅当列idtheDate(从dbo.MyFinalTable追加数据;那些列有他们的数据从存储过程传递,在这个示例中值为'123','2013-03-14')没有那些已经存在的值。

注:我的过程声明如下:

alter procedure [myStoredProcedure] 
    (@theString varchar (30), 
    @id varchar (10), 
    @theDate date) 
+0

你好,你能后的'DBO的结果。 FinalTable? @ CM2K – mfredy

+0

重要的列是'theDate'和'id',其余的只是一些值的计算。不能发布我的真表 – CM2K

+0

而且这是你的存储过程'改变过程[myStoredProcedure] ( @theString VARCHAR(30), @id VARCHAR(10), @theDate日期 )'@ CM2K – mfredy

回答

0

如果我明白你的目标,这可能是查询:

insert into dbo.myFinalTable 
select 
@theString as MyString, 
@id as MyId, 
@theDate as MyDate 
where not exists(select * from dbo.myFinalTable 
       where MyId = @id 
       and MyDate = @theDate)