我有一个在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对象时,它会出错,因为它也期望整数而不是字符串。
如何更改存储过程以指定正确的返回类型?
答案 0 :(得分:3)
SQL Server存储过程返回 int 。总是。这是一个状态值。如果要返回其他值,请使用存储的函数。
当您尝试运行该过程时,您只会收到某种类型的错误。
在这种情况下,您无法创建函数,因为您有UPDATE
语句。因此,您必须使用参数返回输出值。