在Controller.cs 中调用如下:
ManualAdjustmentEntities MA = new ManualAdjustmentEntities();
MA.InsertManualAdjustmentAccounts(manualRequest.Id,manualRequest.TPId);
以下是储存过程:
USE [ManualAdjustment]
GO
/****** Object: StoredProcedure [dbo].[InsertManualAdjustmentAccounts] Script Date: 10/11/2017 11:26:00 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].InsertManualAdjustmentAccounts
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].ManualAdjustmentAccounts
SELECT ma.Id AS ManualAdjustmentRequestID
,ma.TPId
,acc.TPName
,acc.SegmentName
,acc.SubSegmentName
,sami.SegmentGroup
,acc.IsMAL
,sami.ATUID
,sami.ATUName
,sami.ATUGroup
,sami.PhysicalDistrictName
,sami.PhysicalSubDistrictName
,sami.SalesGroup
,sami.SalesTerritory
,ta.[Minimum Seats] AS MinimumSeats
,acc.CountryName
,acc.SubsidiaryName
,acc.SubRegionName
,acc.RegionName
,CASE acc.SubRegionName WHEN 'Australia'
THEN 'Australia'
ELSE acc.AreaName
END AS AreaName
,acc.BigAreaName
,r6.FY18CDSCluster AS R6_Cluster_FY18CDS
,r6.FY18CDSRegion AS R6_Region_FY18CDS
,r6.FY18CDSSubRegion AS R6_SubRegion_FY18CDS
,ib.[Requested PCIB] AS RequestePCIB
FROM dbo.ManualAdjustmentRequest AS ma
LEFT JOIN WIND.app.tbAccount AS acc
ON ma.TPId = acc.TPId
LEFT JOIN WIND.dbo.SAMI_CY_AllAttributes AS sami
ON ma.TPId = sami.TPId
LEFT JOIN WIND.dbo.R6Region AS r6
ON acc.SubRegionName = r6.CreditedWorldwideSubRegion
LEFT JOIN WIND.dbo.Target AS ta
ON acc.SubsidiaryName = ta.Subsidiary
AND acc.SegmentName = ta.Segment
LEFT JOIN WIND.AdjustedIB.vwAdjustedIB ib
ON ma.TPId = ib.TPID
WHERE ma.Id = @Id
AND ma.TPId = @TPId
END
麻烦哪位帮忙看下,我手动去执行存储过程的时候是只插入一条数据,用程序调用的时候就出现重复的两条记录。
代码请参考以下网站:
谢谢!!!
程序调用打断点看看,是否如预期的那样只执行了一次?
SQL语句使用INSERT ....SELECT .......,如果SELECT关联的表过多,容易因为查询出重复数据而导致插入重复数据
如果存储过程没有被调用2次,可以尝试复制出SELECT部分,将参数放入并运行一下,看一下是不是查询出了重复数据