【问题标题】:SQL Server stored procedure return type wrongSQL Server 存储过程返回类型错误
【发布时间】:2016-04-04 22:39:36
【问题描述】:

我有一个在 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 将其返回类型列为整数,即使它返回的是有效字符串。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我现在明白了,谢谢。在 .NET 中,我将输出变量更改为引用,它按预期工作。
    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多