Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 似乎我的存储过程正在返回整数_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 似乎我的存储过程正在返回整数

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,,> -- ====

我最近完成了存储过程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有理由相信我的返回类型是整数。在对象浏览器中,存储过程应该返回整数

我不知道它这样做的原因是什么。有什么想法吗?

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的值;见例。