首頁 >資料庫 >mysql教程 >如何在 SQL 程式碼和預存程序之間傳遞值?

如何在 SQL 程式碼和預存程序之間傳遞值?

Linda Hamilton
Linda Hamilton原創
2025-01-03 17:41:39216瀏覽

How Can I Pass Values Between SQL Code and Stored Procedures?

在 SQL 程式碼和預存程序之間傳遞值

使用 SQL 時,有時需要將 exec 呼叫的結果指派給變數。在這種情況下,您希望將 up_GetBusinessDay 的輸出指派給名為 @PreviousBusinessDay 的變數。

直接分配 Exec 結果的限制

雖然將 exec 結果直接分配給變量,SQL 不支援這種方法。原因是 exec 語句用於執行預存程序而不傳回值。因此,您不能直接將執行結果指派給變數。

使用輸出參數

要從預存程序傳回單一值,您可以使用輸出參數。輸出參數可讓您指定一個變數來接收預存程序傳回的值。以下是在 SQL Server中建立和使用輸出參數的方法:

預存程序定義:

CREATE PROCEDURE YourStoredProcedure 
(
    @Param1 int
   ,@Param2 varchar(5)
   ,@Param3 datetime OUTPUT
)
AS
    IF ISNULL(@Param1, 0) > 5
    BEGIN
        SET @Param3 = GETDATE()
    END
    ELSE
    BEGIN
        SET @Param3 = '1/1/2010'
    END
    
    RETURN 0
GO

儲存過程呼叫:

DECLARE @OutputParameter datetime
       ,@ReturnValue     int

EXEC @ReturnValue = YourStoredProcedure 1, NULL, @OutputParameter OUTPUT

PRINT @ReturnValue
PRINT CONVERT(char(23), @OutputParameter, 121)

輸出:

0
2010-01-01 00:00:00.000

透過使用輸出參數,您可以有效地將exec 呼叫的結果指派給變數。當您需要從預存程序中檢索單一值時,通常會使用此技術。

以上是如何在 SQL 程式碼和預存程序之間傳遞值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn