首頁 > 資料庫 > mysql教程 > 如何將表達式結果作為參數傳遞給 SQL Server 預存程序?

如何將表達式結果作為參數傳遞給 SQL Server 預存程序?

Linda Hamilton
發布: 2025-01-11 17:22:45
原創
847 人瀏覽過

How Can I Pass Expression Results as Parameters to SQL Server Stored Procedures?

使用表達式輸入作為預存程序參數

在建立預存程序時,您可能會遇到將表達式的結果用作參數的困難。下面是一個範例:

<code class="language-sql">DECLARE @pID int;
SET @pID = 1;
EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
登入後複製

但是,此程式碼會引發錯誤(SQL Server 2005):

<code>Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '+'.</code>
登入後複製

文法錯誤解釋

SQL Server 不允許在參數清單中進行此類操作。它期望參數是字面值、宣告的變數或不帶運算子的表達式。

解:使用中間變數

為了解決這個問題,您必須使用一個中間變數。下面的修正後的程式碼示範了這種方法:

<code class="language-sql">DECLARE @pID INT;
SET @pID = 1;
DECLARE @logMessage VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));
EXEC WriteLog 'Component', 'Source', @logMessage;</code>
登入後複製

EXEC 語句的語法

作為參考,EXEC 語句的語法如下:

<code class="language-sql">[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH <execute_option> [ ,...n ] ]
    }
[;]</execute_option></code>
登入後複製

當前限制

在 SQL Server 中,參數清單中參數的可接受值僅限於字面值和以 @@ 為前綴的系統函數。不支援 SCOPE_IDENTITY() 等函數。

以上是如何將表達式結果作為參數傳遞給 SQL Server 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板