DAPATKAN GRUP PERCAKAPAN (Transact-SQL)

Berlaku untuk:SQL ServerAzure 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.

Konvensi sintaks transact-SQL

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)