使用存储过程更新表

时间:2013-05-09 17:42:39

标签: sql sql-server stored-procedures

我们从excel源获取数据并保留在Temp表中并使用带有存储过程的临时表来更新目标表。我遇到目标表中“注释”列的问题,如果有新注释,那么它应该预先添加到现有评论。这里的谜语是目标表列,是输入参数和一些字段以及comments.Eg:

的组合
[Target.Comments] = '[Manager ' + @Getdateparameter +'' + uploaded by + '] ' +Temp.comments + '' + Target.comments.

今天有新纪录出现时,

Comment  =  [Manager1 May_9_2013 uploader1] robert is in canada

如果您在另一天再次运行且评论中没有更新(应该检查现有评论),那么

Comment  =  [Manager1 May_9_2013 uploader1] robert is in canada

如果5月15日评论中有更新,那么它应该是

Comment = [Manager1 May_15_2013 uploader1] robert is moved away from canada and now he is in US.[Manager1 May_9_2013 uploader1] robert is in canada

如何实现这一目标? 感谢。

1 个答案:

答案 0 :(得分:1)

您没有为您实际编写代码提供任何真实信息(您是在循环,插入单个语句等),但尝试这样的事情:

UPDATE y
    SET YourComment=t.NewValue+ISNULL('; '+y.YourComment,'')
    FROM YourTable                y
        INNER JOIN YourTempTable  t On y.PK=t.PK
    WHERE t.NewValue IS NOT NULL

我将其编码为在评论之间放置“;”,但如果没有必要,您可以删除。将“t.NewValue”替换为形成新注释的字符串连接。

这实际上是一个架构问题。您应该创建一个“注释”表,将不同的值拆分为各自的列,每个注释都有一行。此时,您始终插入并且不进行更新或连接。您可以使用视图或应用程序处理将它们组合起来以供用户演示。