Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menangkap Keputusan Pertanyaan SQL Dinamik ke dalam Pembolehubah dalam Pelayan SQL?
SQL Server: Menangkap Keputusan Pertanyaan SQL Dinamik dalam Pembolehubah
Prosedur tersimpan selalunya menggunakan SQL dinamik, membina pertanyaan dengan cepat. Cabaran utama ialah mendapatkan semula hasil pertanyaan dinamik ini dalam prosedur itu sendiri.
Pertimbangkan senario ini:
<code class="language-sql">DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city</code>
Coretan kod ini menjana pertanyaan COUNT(*)
secara dinamik, tetapi tidak menangkap hasilnya. Untuk menangani perkara ini, kami memerlukan pendekatan yang diubah suai:
<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000) DECLARE @count INT DECLARE @city VARCHAR(75) SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
Berikut ialah penjelasan terperinci:
Isytihar Pembolehubah Hasil: Kami mengisytiharkan @cnt
sebagai INT
untuk menahan output pertanyaan.
Ubah suai Dynamic SQL: Pernyataan SELECT
dilaraskan untuk memperuntukkan hasil COUNT(*)
kepada @cnt
: SELECT @cnt=COUNT(*)
.
Gunakan sp_executesql
dengan OUTPUT: sp_executesql
digunakan dengan parameter OUTPUT
untuk menentukan bahawa @cnt
akan menerima nilai daripada pertanyaan. Perhatikan pengisytiharan parameter @cnt int OUTPUT
.
Dapatkan Keputusan: Selepas pelaksanaan, @cnt
mengandungi kiraan. SELECT @count
memaparkan nilai yang disimpan.
Kaedah yang diperhalusi ini dengan cekap menangkap keputusan SQL dinamik ke dalam pembolehubah, membolehkan pemprosesan lanjut atau pengembalian dalam prosedur yang disimpan.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Keputusan Pertanyaan SQL Dinamik ke dalam Pembolehubah dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!