为什么在调用存储过程时会出现异常
本文关键字:异常 调用 存储过程 为什么 | 更新日期: 2023-09-27 18:03:45
我使用Entity Framework 6和Microsoft SQL Server 2012。
这是我的存储过程:
ALTER PROCEDURE SPDeleteRegion
@siteId int,
@regionId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @isDeleted BIT
IF EXISTS (SELECT 1 FROM SiteObjects WHERE SiteRegionId = @regionId)
BEGIN
SET @isDeleted = 0 ; --not deleted
RETURN @isDeleted;
END
ELSE
BEGIN
--do what needs to be done if not
DELETE FROM SiteRegions
WHERE Id = @regionId;
SET @isDeleted = 1; -- deleted
RETURN @isDeleted;
END
END
下面是我如何在c#中调用存储过程:
var t = _context.Database.SqlQuery<bool>("SPDeleteRegion @siteId, @regionId",
new SqlParameter("@siteId", siteId),
new SqlParameter("@regionId", regionId));
在上面的代码行中,我得到了这个异常:
数据读取器有多个字段。多个字段对EDM原语类型或枚举类型无效。
知道为什么我得到异常和如何修复它吗?
程序没有选择任何东西。像这样修改:
ALTER PROCEDURE SPDeleteRegion
-- Add the parameters for the stored procedure here
@siteId int,
@regionId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@isDeleted BIT
IF EXISTS (SELECT 1 FROM SiteObjects WHERE SiteRegionId = @regionId)
BEGIN
SET @isDeleted = 0 ; --not deleted
SELECT @isDeleted [IsDeleted]; --HERE
END
ELSE
BEGIN
--do what needs to be done if not
DELETE FROM SiteRegions WHERE Id = @regionId;
SET @isDeleted = 1;--deleted
SELECT @isDeleted [IsDeleted]; -- AND HERE
END
END