Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meluluskan Keputusan Ungkapan sebagai Parameter Prosedur Tersimpan dengan Betul?
SQL Server Stored Procedure Parameter Pitfalls: Mengendalikan Keputusan Ungkapan
Melalukan output ungkapan atau panggilan fungsi secara langsung sebagai parameter dalam prosedur tersimpan SQL Server selalunya membawa kepada ralat. Mari kita gambarkan ini dengan isu biasa yang dihadapi dalam SQL Server 2005:
Coretan kod berikut menjana ralat sintaks:
<code class="language-sql">DECLARE @pID int; SET @pID = 1; EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
Ini mengakibatkan ralat:
<code>Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '+'.</code>
Punca punca? SQL Server tidak membenarkan penggunaan langsung ekspresi atau hasil fungsi dalam senarai parameter prosedur yang disimpan. Penyelesaian melibatkan pembolehubah perantaraan.
Berikut ialah pendekatan yang diperbetulkan:
<code class="language-sql">DECLARE @pID INT; DECLARE @logMessage VARCHAR(50); SET @pID = 1; SET @logMessage = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Kod yang disemak ini memberikan hasil ungkapan kepada @logMessage
, yang kemudiannya diiktiraf dengan betul sebagai parameter ketiga. Prosedur tersimpan dilaksanakan tanpa ralat.
Adalah penting untuk ambil perhatian: Sekatan ini terpakai semata-mata pada nilai parameter; ungkapan dalam badan prosedur yang disimpan tidak terjejas.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Keputusan Ungkapan sebagai Parameter Prosedur Tersimpan dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!