2016-05-01 23 views
-2

下面我有相同的代碼:存儲過程返回nvarchar的

CREATE PROCEDURE TEST1 
    (@id INT, @name NVARCHAR(30) OUTPUT) 
AS 
    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id; 

CREATE PROCEDURE TEST2(@id INT) 
AS 
    DECLARE @name NVARCHAR(30); 

    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id; 

    RETURN @name; 

頂部的代碼是OK,但第二個我得到一個錯誤:

消息245,第16層,狀態1,過程TEST2,第174行
轉換nvarchar值'NguyễnThanh Tùng'爲數據類型int。

你能幫我解釋一下嗎?

回答

1

無法使用RETURN一個SQL Server存儲過程返回varchar - 你只能返回整數值。

參見"Returning Data Using a Return Code" MSDN文檔其中明確規定:

過程可以返回一個整數稱爲返回代碼以指示一個程序的執行狀態。

通常,這樣的值用於指示受存儲過程影響的行數或指示錯誤代碼。

如果您需要返回字符串,則必須使用OUTPUT參數或返回結果集(使用SELECT語句)。