3

@logs問題が発生しました。ユーザー定義テーブル( )でストアドプロシージャを使用しています。コマンドを使用して、他のデータベーステーブル(InOutLog)に挿入します。ここでidOUTPUT intoを取得します。inserted

主な問題は、ユーザー定義テーブルを2つのデータベーステーブルに挿入することです。

  1. InOutLog、挿入されたIDと..
  2. 挿入されたIDと他の定義されたテーブル値(l.Title+';'+l.Comment)を取得してテーブルに挿入したいMessageLog

しかし、私はアクセスできませんl.Title+';'+l.Comment。また、ユーザー定義テーブルと一時テーブルをID値が挿入された状態でマージする簡単な解決策が見つかりません。

コードは次のとおりです。

insert into InOutLog(NFCId, UserID, DateEnter, DateLeave, ProjectId, 
Status, ServerDateEnter)
output inserted.Id, inserted.DateLeave, l.Title+';'+l.Comment, inserted.UserId 
into MessageLog(TagLogId, MessageDate, Answer, UserId)
  select l.NFCTagId, l.UserId, l.ScanDate, l.StartDate, @projectID, 0, getdate()
  from @logs l

助言がありますか?この場合のベストプラクティスは何ですか?

4

1 に答える 1

7

INSERTではなくMERGEを使用してください。

これにより、INSERTionsのOUTPUT句のソーステーブルにアクセスできます。

例:http ://sqlblog.com/blogs/jamie_thomson/archive/2010/01/06/merge-and-output-the-swiss-army-knife-of-t-sql.aspx

于 2012-05-08T08:15:18.400 に答える