DAPATKAN GRUP PERCAKAPAN (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Mengembalikan pengidentifikasi grup percakapan untuk pesan berikutnya yang akan diterima, dan mengunci grup percakapan untuk percakapan yang berisi pesan. Pengidentifikasi grup percakapan dapat digunakan untuk mengambil informasi status percakapan sebelum mengambil pesan itu sendiri.
Sintaksis
[ WAITFOR ( ]
GET CONVERSATION GROUP @conversation_group_id
FROM <queue>
[ ) ] [ , TIMEOUT timeout ]
[ ; ]
<queue> ::=
{ database_name.schema_name.queue_name | schema_name.queue_name | queue_name }
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
WAITFOR
Menentukan bahwa pernyataan GET CONVERSATION GROUP menunggu pesan tiba di antrean jika saat ini tidak ada pesan.
@conversation_group_id
Adalah variabel yang digunakan untuk menyimpan ID grup percakapan yang dikembalikan oleh pernyataan GET CONVERSATION GROUP. Variabel harus berjenis uniqueidentifier. Jika tidak ada grup percakapan yang tersedia, variabel diatur ke NULL.
DARI
Menentukan antrean untuk mendapatkan grup percakapan.
database_name
Adalah nama database yang berisi antrean untuk mendapatkan grup percakapan. Ketika tidak ada database_name yang disediakan, default ke database saat ini.
schema_name
Adalah nama skema yang memiliki antrean untuk mendapatkan grup percakapan. Ketika tidak ada schema_name yang disediakan, default ke skema default untuk pengguna saat ini.
queue_name
Adalah nama antrean untuk mendapatkan grup percakapan.
Batas waktu habis
Menentukan lamanya waktu, dalam milidetik, Bahwa Service Broker menunggu pesan tiba pada antrean. Klausa ini hanya dapat digunakan dengan klausa WAITFOR. Jika pernyataan yang menggunakan WAITFOR tidak menyertakan klausul ini atau batas waktunya adalah -1, waktu tunggu tidak terbatas. Jika batas waktu habis, GET CONVERSATION GROUP mengatur variabel @conversation_group_id ke NULL.
Keterangan
Penting
Jika pernyataan GET CONVERSATION GROUP bukan pernyataan pertama dalam prosedur batch atau tersimpan, pernyataan sebelumnya harus dihentikan dengan titik koma (;), terminator pernyataan Transact-SQL.
Jika antrean yang ditentukan dalam pernyataan GET CONVERSATION GROUP tidak tersedia, pernyataan gagal dengan kesalahan Transact-SQL.
Pernyataan ini mengembalikan grup percakapan berikutnya di mana semua hal berikut ini benar:
Grup percakapan dapat berhasil dikunci.
Grup percakapan memiliki pesan yang tersedia dalam antrean.
Grup percakapan memiliki tingkat prioritas tertinggi dari semua grup percakapan yang memenuhi kriteria yang tercantum sebelumnya. Tingkat prioritas grup percakapan adalah tingkat prioritas tertinggi yang ditetapkan ke percakapan apa pun yang merupakan anggota grup dan memiliki pesan dalam antrean.
Panggilan berturut-turut ke GET CONVERSATION GROUP dalam transaksi yang sama dapat mengunci lebih dari satu grup percakapan. Jika tidak ada grup percakapan yang tersedia, pernyataan mengembalikan NULL sebagai pengidentifikasi grup percakapan.
Saat klausul WAITFOR ditentukan, pernyataan menunggu batas waktu yang ditentukan, atau hingga grup percakapan tersedia. Jika antrean dihilangkan saat pernyataan sedang menunggu, pernyataan segera mengembalikan kesalahan.
GET CONVERSATION GROUP tidak valid dalam fungsi yang ditentukan pengguna.
Izin
Untuk mendapatkan pengidentifikasi grup percakapan dari antrean, pengguna saat ini harus memiliki izin RECEIVE pada antrean.
Contoh
J. Mendapatkan grup percakapan, menunggu tanpa batas waktu
Contoh berikut diatur @conversation_group_id
ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue
. Perintah menunggu hingga pesan tersedia.
DECLARE @conversation_group_id UNIQUEIDENTIFIER ;
WAITFOR (
GET CONVERSATION GROUP @conversation_group_id
FROM ExpenseQueue
) ;
B. Mendapatkan grup percakapan, menunggu satu menit
Contoh berikut diatur @conversation_group_id
ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue
. Jika tidak ada pesan yang tersedia dalam satu menit, GET CONVERSATION GROUP akan kembali tanpa mengubah nilai @conversation_group_id
.
DECLARE @conversation_group_id UNIQUEIDENTIFIER
WAITFOR (
GET CONVERSATION GROUP @conversation_group_id
FROM ExpenseQueue ),
TIMEOUT 60000 ;
C. Mendapatkan grup percakapan, segera kembali
Contoh berikut diatur @conversation_group_id
ke pengidentifikasi grup percakapan untuk pesan berikutnya yang tersedia di ExpenseQueue
. Jika tidak ada pesan yang tersedia, GET CONVERSATION GROUP
segera kembali tanpa mengubah @conversation_group_id
.
DECLARE @conversation_group_id UNIQUEIDENTIFIER ;
GET CONVERSATION GROUP @conversation_group_id
FROM AdventureWorks.dbo.ExpenseQueue ;
Lihat Juga
MULAI PERCAKAPAN DIALOG (Transact-SQL)
PINDAHKAN PERCAKAPAN (Transact-SQL)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk