使用ExecuteSqlCommand(使用实体框架)从存储过程中获取返回值
本文关键字:存储 存储过程 过程中 返回值 获取 框架 ExecuteSqlCommand 实体 使用 | 更新日期: 2023-09-27 18:22:06
我有这样的代码:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中databaseContext的类型为System.Data.Entity.DbContext
我想使用返回值来知道存储过程是否成功运行。根据文档ExecuteSqlCommand
应返回存储过程的结果。
然而,无论我将存储过程设置为执行什么操作,该命令都会将-1返回到retval。我曾尝试返回各种整数,甚至在存储过程中调用RAISEROR,但返回值始终为-1。
以下是我尝试过的两个存储的proc,但它们都返回了-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
知道我在这里做错了什么吗?
基于DavidG的评论:
ExecuteSqlCommand仅在其为select语句的结果时返回值。
如果您想要存储过程的返回值(如问题中所示),则必须使用本SO答案中所述的EXEC @ReturnValue = [StoredProc] @param1 ...
方法。