我最近完成了我的存储过程101,只是写了一个小存储过程,如下所示:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SelectProUserByUsername]
@userName varchar(300)
AS
BEGIN
SET NOCOUNT ON;
SELECT * from ProUser
END
出于某种原因,SSMS有理由相信我的返回类型是整数。应该在对象浏览器中我的存储过程返回整数
我不确定它为什么会这样做。有什么想法吗?
答案 0 :(得分:4)
SQL Server支持User-Defined Functions和Stored Procedures。函数将许多参数作为输入,并返回用户定义类型的单个值作为输出,而存储过程只是一组连接的SQL语句。它们可以通过输入和输出参数连接到程序的其余部分,或者它们可以简单地修改数据,生成结果集等,就像将Transact-SQL直接粘贴到查询中一样。
引用the Books Online article,存储过程可以:
最后一点是存储过程“返回整数”的意义,因为返回状态始终是整数值(默认值为0)。这是通过在存储过程中使用the RETURN
statement来控制的。
例如,如果我像上面那样运行你的存储过程:
DECLARE @return_status int;
EXEC @return_status = SelectProUserByUsername 'IMSoP';
SELECT @return_status as status;
我会获得status
0
的其他结果集;如果我在程序结束时添加RETURN 1
,我会改为1
。
SSMS只是显示“返回类型”以与函数一致,但它总是存储过程的整数。
注意,在某些上下文中,整数返回函数和存储过程可以互换使用;例如,上面示例中的the EXECUTE
/EXEC
statement对任何“模块”(过程,函数等)使用相同的语法。