2012-05-08 3 views
2

問題が発生しました。ユーザー定義テーブル(@logs)でストアドプロシージャを使用します。私は他のデータベーステーブル(InOutLog)にそれを挿入し、OUTPUT intoというコマンドで、insertedというIDを取得します。 SQL Server:出力が挿入されました。挿入された一時的なユーザー定義テーブルと結合します

  • が挿入idと他の定義されたテーブルを取りたい

    1. 私はID挿入されますInOutLog、と..:

      主な問題は、私は2つのデータベーステーブルに私のユーザ定義のテーブルを挿入したいものです値(l.Title+';'+l.Comment)とは、テーブルMessageLog

    にそれを挿入しかし、私はl.Title+';'+l.Commentにアクセスすることはできません。

    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 
    

    任意の提案:また、私はここで

    は、コード..です私のユーザ定義のテーブルと挿入のid値を持つ一時テーブルをマージする任意の簡単な解決策を見つけることができませんか?この場合のベストプラクティスは何ですか?

  • +0

    あなたのコード – Arion

    答えて

    6

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

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

    例:このリンクは質問に答えるかもしれないがhttp://sqlblog.com/blogs/jamie_thomson/archive/2010/01/06/merge-and-output-the-swiss-army-knife-of-t-sql.aspx

    +0

    をフォーマットしてください、ここでは重要な部分(すなわち、コード例)を含めることをお勧めします。 – dakab

    関連する問題