我有这样的代码:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中databaseContext是System.Data.Entity.DbContext类型
我想使用返回值来了解存储过程是否成功运行。基于the documentation 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
知道我在这里做错了什么吗?
最佳答案
基于 DavidG 的评论:
ExecuteSqlCommand 仅在它是 select 语句的结果时才返回值。
如果您想要存储过程的返回值(如问题中所示),则必须使用 EXEC @ReturnValue = [StoredProc] @param1 ...
中所述的方法this SO answer .
关于c# - 使用 ExecuteSqlCommand 从存储过程中获取返回值(使用 Entity Framework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33747405/