SQL Server存储过程返回类型错误

时间:2016-04-04 22:39:36

标签: sql-server stored-procedures sql-server-2012

我有一个在SQL中运行良好的存储过程。输出类型是一个字符串。

ALTER PROCEDURE [gis].[usp_GetNextUp_suffix] 
    @TableName varchar(50), 
    @id_w_suffix varchar(20) OUTPUT
AS
    DECLARE @id int, @suffix varchar(6)

    SELECT @id = Next_FacilityID 
    FROM dbo.Next_up 
    WHERE table_name = @TableName

    SELECT @suffix = Suffix 
    FROM dbo.Next_up 
    WHERE table_name = @TableName

    SET @id_w_suffix = @suffix + CONVERT(varchar, @id) + 'A'

    UPDATE dbo.Next_up 
    SET Next_FacilityID = @id + 1 
    WHERE table_name = @TableName
GO

但是,SQL Server Management Studio将其返回类型列为整数,即使它返回有效字符串。

enter image description here

当我将存储过程拉入.net LINQ对象时,它会出错,因为它也期望整数而不是字符串。

如何更改存储过程以指定正确的返回类型?

1 个答案:

答案 0 :(得分:3)

SQL Server存储过程返回 int 。总是。这是一个状态值。如果要返回其他值,请使用存储的函数。

当您尝试运行该过程时,您只会收到某种类型的错误。

在这种情况下,您无法创建函数,因为您有UPDATE语句。因此,您必须使用参数返回输出值。