使用 ExecuteSqlCommand 从存储过程中获取 return 值(使用 Entity Framework)
Get return value from stored procedure using ExecuteSqlCommand (using Entity Framework)
我的代码如下所示:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中 databaseContext 的类型为 System.Data.Entity.DbContext
我想使用 return 值来知道存储过程 运行 是否成功。根据the documentation ExecuteSqlCommand
应该return存储过程的结果。
但是,无论我将存储过程设置为做什么,命令总是 returns -1 到 retval。我试过 returning 各种整数,甚至在存储过程中调用 RAISERROR,但 return 值始终为 -1。
这是我尝试过的两个存储过程,但它们都 returned -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 仅 returns 值,如果它是 select 语句的结果。
如果您想要存储过程的 return 值(如问题中所示),则必须使用 this SO answer 中描述的 EXEC @ReturnValue = [StoredProc] @param1 ...
方法。
我的代码如下所示:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中 databaseContext 的类型为 System.Data.Entity.DbContext
我想使用 return 值来知道存储过程 运行 是否成功。根据the documentation ExecuteSqlCommand
应该return存储过程的结果。
但是,无论我将存储过程设置为做什么,命令总是 returns -1 到 retval。我试过 returning 各种整数,甚至在存储过程中调用 RAISERROR,但 return 值始终为 -1。
这是我尝试过的两个存储过程,但它们都 returned -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 仅 returns 值,如果它是 select 语句的结果。
如果您想要存储过程的 return 值(如问题中所示),则必须使用 this SO answer 中描述的 EXEC @ReturnValue = [StoredProc] @param1 ...
方法。