Sql server 似乎我的存储过程正在返回整数
我最近完成了存储过程101,只编写了一个小存储过程,如下所示:Sql server 似乎我的存储过程正在返回整数,sql-server,stored-procedures,Sql Server,Stored Procedures,我最近完成了存储过程101,只编写了一个小存储过程,如下所示: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ====
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有理由相信我的返回类型是整数。在对象浏览器中,存储过程应该返回整数
我不知道它这样做的原因是什么。有什么想法吗?SQL Server同时支持和。函数接受多个参数作为输入,并返回一个用户定义类型的值作为输出,而存储过程只是一组连接的SQL语句。它们可以通过输入和输出参数连接到程序的其余部分,也可以简单地修改数据、生成结果集等,就像Transact-SQL已直接粘贴到查询中一样
引用一下,存储过程可以:
接受输入参数并以输出参数的形式将多个值返回给调用程序。
包含在数据库中执行操作的编程语句。这些包括调用其他过程。
向调用程序返回状态值,以指示成功或失败以及失败的原因。
最后一点是存储过程返回整数的意义,因为返回状态始终是默认值为0的整数值。这是通过在存储过程内部使用来控制的
例如,如果我像这样运行上面的存储过程:
DECLARE @return_status int;
EXEC @return_status = SelectProUserByUsername 'IMSoP';
SELECT @return_status as status;
我将获得一个状态为0的附加结果集;如果在过程结束时添加RETURN 1,则会得到1
SSMS只是显示与函数一致的返回类型,但对于存储过程来说,它总是一个整数
注意,在某些上下文中,整数返回函数和存储过程可以互换使用;例如,在我上面的示例中,对任何模块过程、函数等都使用相同的语法。如果我是对的,可能有人可以用引用来回答这个问题,但我认为这里的关键是过程实际上没有返回值,而函数有返回值。返回的整数可能是指proc可以设置的退出状态。实际结果集只是作为运行存储过程的副作用弹出的,并不是以通常的编程意义返回的。@IMSoP:我明白了,您的意思是这只是一个指示过程是否正确退出的指示器。。这是正确的理解吗?不是过程是否执行:而是结果集中的行数。谢谢..这是正确的helpful@JoelCoehoorn嗯,我可能错了,但我假设它是返回x的值;见例。