Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meluluskan Hasil Ungkapan sebagai Parameter dalam Prosedur Tersimpan Pelayan SQL?

Bagaimana untuk Meluluskan Hasil Ungkapan sebagai Parameter dalam Prosedur Tersimpan Pelayan SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 17:01:42546semak imbas

How to Pass the Result of an Expression as a Parameter in a SQL Server Stored Procedure?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn