首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MSSQL 預存程序與函數輸出參數實戰語法速查

     編輯:MySQL 資料庫相關知識

OUTPUT 參數基本語法

CREATE PROCEDURE proc_name
    @param1 datatype OUTPUT,
    @param2 datatype OUTPUT
AS
BEGIN
    SELECT @param1 = 'value1', @param2 = 'value2';
END

呼叫端接收輸出

DECLARE @out1 datatype, @out2 datatype;
EXEC proc_name @out1 OUTPUT, @out2 OUTPUT;
PRINT @out1;
PRINT @out2;

完整範例:雙輸出參數

CREATE PROCEDURE ch
    @ch VARCHAR(55) OUTPUT,
    @PING VARCHAR(45) OUTPUT
AS
BEGIN
    SELECT @ch = 'ffgfgfg', @PING = 'chenssksksk';
END
GO

DECLARE @chs VARCHAR(55), @pins VARCHAR(45);
EXECUTE ch @chs OUTPUT, @pins OUTPUT;
PRINT @chs;   -- ffgfgfg
PRINT @pins;  -- chenssksksk

RETURN 值(僅限 INT)

CREATE PROCEDURE PIN
AS
BEGIN
    RETURN 1;
END
GO

DECLARE @NUM INT;
EXEC @NUM = PIN;  -- 必須用 EXEC @var = proc
PRINT @NUM;       -- 1

標量函數 (Scalar Function)

CREATE FUNCTION dbo.jian()
RETURNS VARCHAR(500)
AS
BEGIN
    DECLARE @ch VARCHAR(50);
    SET @ch = 'dkdkkddk';
    RETURN @ch;
END
GO

SELECT dbo.jian();  -- dkdkkddk

關鍵差異速查表

特性預存程序函數
返回值可多個 OUTPUT 參數 + 1 個 INT RETURN單一 RETURNS 型別值
呼叫方式EXEC / EXECUTESELECT func() / SET @v = func()
可用於 SELECT否是
可執行 DML是否(僅限表值函數可插入)
事務控制可用 BEGIN TRAN不可

常見錯誤與修正

錯誤寫法正確寫法說明
SET EXECUTE @NUM=PINEXEC @NUM = PIN接收 RETURN 值用 EXEC @var = proc
函數內用 INSERT/UPDATE改用預存程序標量函數不可執行 DML
OUTPUT 參數未加 OUTPUT 關鍵字呼叫端也要加 OUTPUT雙邊都需宣告 OUTPUT

掌握以上語法,即可在 MSSQL 中靈活運用預存程序與函數實現複雜業務邏輯與參數傳遞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved