Jika saya memiliki pernyataan masukkan seperti:
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
Bagaimana cara saya menetapkan @var INT
nilai identitas baris baru (dipanggil Id
) menggunakan klausa OUTPUT? Saya telah melihat contoh menempatkan INSERTED.Name ke dalam variabel tabel, misalnya, tapi saya tidak bisa memasukkannya ke dalam variabel non-tabel.
Saya sudah mencoba OUPUT INSERTED.Id AS @var
, SET @var = INSERTED.Id
tapi tidak berhasil.
sql
sql-server-2005
insert
Yatrix
sumber
sumber
OUTPUT
klausa.OUTPUT
klausul menulis ke sebuah meja. Ini bisa berupa variabel tabel, tabel sementara, ....Jawaban:
Anda dapat memiliki ID yang baru dimasukkan menjadi output ke konsol SSMS seperti ini:
Anda dapat menggunakan ini juga dari misalnya C #, ketika Anda perlu mendapatkan ID kembali ke aplikasi panggilan Anda - jalankan saja query SQL dengan
.ExecuteScalar()
(bukan.ExecuteNonQuery()
) untuk membacaID
kembali hasilnya .Atau jika Anda perlu menangkap
ID
T-SQL yang baru dimasukkan (misalnya untuk diproses lebih lanjut), Anda perlu membuat variabel tabel:Dengan cara ini, Anda dapat memasukkan beberapa nilai ke dalam
@OutputTbl
dan melakukan pemrosesan lebih lanjut pada nilai-nilai itu. Anda juga bisa menggunakan tabel sementara "biasa" (#temp
) atau bahkan tabel persisten "nyata" sebagai "target keluaran" Anda di sini.sumber
real persistent table
- ini sangat fantastis karena itu berarti Anda dapatINSERT
informasi dalamTWO
tabel pada saat yang bersamaan.SCOPE_IDENTITY()
bekerja lebih baik untuk itu.