C# 使用ExecuteSqlCommand(使用实体框架)从存储过程获取返回值
我有如下代码:C# 使用ExecuteSqlCommand(使用实体框架)从存储过程获取返回值,c#,sql-server,entity-framework,stored-procedures,azure-sql-database,C#,Sql Server,Entity Framework,Stored Procedures,Azure Sql Database,我有如下代码: int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray()); 其中databaseContext的类型为System.Data.Entity.DbContext 我想使用返回值来知道存储过程是否成功运行。基于ExecuteSqlCommand应返回存储过程的结果 但是,无论我如何设置存储过程,该命令总是将-1返回到retval。我尝试返回各种整数,甚至在存储过
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中databaseContext的类型为System.Data.Entity.DbContext
我想使用返回值来知道存储过程是否成功运行。基于ExecuteSqlCommand
应返回存储过程的结果
但是,无论我如何设置存储过程,该命令总是将-1返回到retval。我尝试返回各种整数,甚至在存储过程中调用RAISERROR,但返回值始终为-1
下面是我尝试过的两个存储过程,但它们都返回了-1,并且没有给出它是否成功运行的任何指示:
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RAISERROR ('You fail', -- Message text.
0, -- Severity - operation failed.
500-- State.
);
END
GO
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RETURN 1
END
GO
你知道我做错了什么吗?根据大卫的评论: ExecuteSqlCommand仅当它是select语句的结果时才返回值
如果需要存储过程的返回值(如问题中所示),则必须使用
EXEC@ReturnValue=[StoredProc]@param1…
方法,如中所述 @DavidG可能重复,不,这是另一个问题。这个问题要求查询采用特定的格式,而ExecuteSqlCommand文档似乎不需要任何此类内容。如果需要返回值,则必须使用该方法ExecuteSqlCommand
不会为您执行此操作,除非可能有什么SELECT
s将值放入结果集中。@DavidG,啊,我明白了。我看到了你联系的答案,但不理解其中的区别。如果你想把你的评论作为一个答案发表,我会接受的。不值得为这个评论发表一个答案。