Meluluskan hasil ekspresi sebagai parameter dalam prosedur disimpan SQL Server
Seorang pembangun mengalami ralat semasa cuba melaksanakan prosedur tersimpan, bertujuan untuk meningkatkan pembangunan pangkalan data. Ralat berlaku apabila cuba menghantar hasil ungkapan (khususnya gabungan rentetan "Tidak dapat mencari id yang diberikan: " dengan nilai pembolehubah integer @pID) terus ke dalam senarai argumen.
Walau bagaimanapun, SQL Server tidak menyokong operasi sedemikian dalam senarai parameter itu sendiri. Sebaliknya, pembolehubah perantaraan mesti digunakan untuk memegang hasil ungkapan sebelum menghantarnya kepada hujah.
Sintaks EXEC tidak menyatakan secara eksplisit format "nilai" dalam bahagian parameter, menunjukkan bahawa hanya ungkapan mudah diterima. Ungkapan ini terhad kepada nilai literal dan beberapa fungsi sistem yang diawali dengan @@. Fungsi sistem lain, walaupun yang tidak memerlukan kurungan, tidak dibenarkan.
Jadi, untuk menyelesaikan ralat ini, pembangun perlu menggunakan sintaks berikut:
<code class="language-sql">DECLARE @pID INT; SET @pID = 1; /*如果使用2008及以上版本,之前的版本需要分成两个单独的语句*/ DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @string;</code>
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Hasil Ungkapan sebagai Parameter dalam Prosedur Tersimpan Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!