2015-01-09 109 views
-4

當運行我的存儲過程,我得到這個錯誤:存儲過程消息8152

Msg 8152, Level 16, State 14, Procedure spCompReporting Detail, Line 26

我不能準確判斷它的失敗。

下面是輸出:

USE [DatabseName] 
GO DECLARE *return_value int EXEC @return_value = [dbo].[spCompReportingDetail1] 
@Date1 = N'12/01/14', 
@Date2 = N'12/10/14' SELECT 'Return Value' = @return_value 
GO 

而這裏的代碼:

USE [DatabaseName] 
GO 
/****** Object: StoredProcedure [dbo].[spCompReportingDetail1] Script Date: 01/09/2015 11:23:54 ******/ 
SET ANSI_NULLS OFF 
GO 
SET QUOTED_IDENTIFIER OFF 
GO 
ALTER PROCEDURE [dbo].[spCompReportingDetail1] 
/* 
    First Run. Puts all in staging table. 

    Need to add : 
     Liability Removed 
     TotalBenCharges 
     BenChargesPaidDate 
     RemainingBenCharges 
*/ 


@Date1 as datetime, 
@Date2 as datetime 

AS 
exec dbo.npCompReportingTablesCreate 
SET ANSI_NULLS OFF 

SET QUOTED_IDENTIFIER OFF 



--delete from COMP_REPORT_DETAIL_STAGING 

INSERT INTO COMP_REPORT_DETAIL_STAGING 
         (ClientID, ClientNumber, CompanyName, ClaimID, LastName, FirstName, SSN, PotentialBenefitCharge, CostCenterNumber, CostCenterDescription, 
         RegionNumber, RegionDescription, DistrictNumber, DistrictDescription, ClaimDate, BYEDate, HireDate, LastDayWorked, SeparationCode, SepCodeDescr, 
         SeparationReason, CurClaimStatus, HearingDate, HearingDecision, BoardAppealDate, BoardDecision) 
SELECT  CLIENTS.ClientID, Clients.ClientNumber, COMPANY_NAMES.CompanyName, CLAIMS.ClaimID, CLAIMS.LastName, CLAIMS.FirstName, CLAIMS.SSN, 
         CLAIMS.PotentialBenefitCharge, COST_CENTERS.CostCenterNumber, COST_CENTERS.CostCenterDescription, 
         REGIONS.RegionNumber, REGIONS.RegionDescription, DISTRICTS.DistrictNumber, DISTRICTS.DistrictDescription, CLAIMS.ClaimDate, CLAIMS.BYE, 
         CLAIMS.HireDate, CLAIMS.LastDayWorked, SEPARATION_CODES.SeparationCode, SEPARATION_CODES.[Description] AS SepCodeDescr, 
         SEPARATION_REASONS.SeparationReason, CUR_CLAIM_STATUS.CurClaimStatus, CLAIMS.HearingDate, DECISIONS_2.Decision AS HearingDecision, 
         CLAIMS.BoardAppealDate, DECISIONS_1.Decision AS BoardDecision  
FROM   CLIENTS INNER JOIN 
         CLAIMS ON CLIENTS.ClientID = CLAIMS.ClientID INNER JOIN      
         COMPANY_NAMES ON CLIENTS.CompanyNameID = COMPANY_NAMES.CompanyNameID INNER JOIN 
         COST_CENTERS ON CLIENTS.ClientID = COST_CENTERS.ClientID AND CLAIMS.CostCenterID = COST_CENTERS.CostCenterID INNER JOIN 
         REGIONS ON CLIENTS.ClientID = REGIONS.ClientID AND COST_CENTERS.RegionID = REGIONS.RegionID INNER JOIN 
         DISTRICTS ON CLIENTS.ClientID = DISTRICTS.ClientID AND REGIONS.DistrictID = DISTRICTS.DistrictID INNER JOIN 
         SEPARATION_CODES ON CLAIMS.SeparationCodeID = SEPARATION_CODES.SeparationCodeID INNER JOIN 
         SEPARATION_REASONS ON CLAIMS.SeparationReasonID = SEPARATION_REASONS.SeparationReasonID AND 
         SEPARATION_CODES.SeparationCodeID = SEPARATION_REASONS.SeparationCodeID INNER JOIN 
         CUR_CLAIM_STATUS ON CLAIMS.CurClaimStatusID = CUR_CLAIM_STATUS.CurClaimStatusID INNER JOIN 
         DECISIONS DECISIONS_1 ON CLAIMS.BoardDecisionID = DECISIONS_1.DecisionID INNER JOIN 
         DECISIONS DECISIONS_2 ON CLAIMS.HearingDecisionID = DECISIONS_2.DecisionID 
WHERE  (CAST(CLAIMS.ClaimDate as datetime) between @Date1 AND @Date2) 
ORDER BY COMPANY_NAMES.CompanyName, CLAIMS.LastName, CLAIMS.FirstName 


DELETE FROM COMP_REPORT_DETAIL_STAGING WHERE rtrim(ClientNumber) IN ('888', '999') ------------------------------------------SPECIAL FOR COMP REPORT----------------------------------------- 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET    BenChargesPaidDate = (SELECT MAX(DateOfCharge) FROM BENEFIT_CHARGES 
          WHERE BENEFIT_CHARGES.ClaimID = COMP_REPORT_DETAIL_STAGING.ClaimID) 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET    BenChargesPaidDate = convert(datetime, (cast(datepart(month, BenChargesPaidDate) as char) + '/' + cast(datepart(day, BenChargesPaidDate) as char) + '/' + cast(datepart(year, BenChargesPaidDate) as char))) 


UPDATE COMP_REPORT_DETAIL_STAGING 
SET    TotalBenCharges = (SELECT SUM(cast(Charges as decimal)) 
       FROM BENEFIT_CHARGES 
       WHERE BENEFIT_CHARGES.ClaimID = COMP_REPORT_DETAIL_STAGING.ClaimID)  



UPDATE COMP_REPORT_DETAIL_STAGING 
SET    TotalBenCharges = 0 WHERE TotalBenCharges = null 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET   LiabilityRemoved = PotentialBenefitCharge 
WHERE RTRIM(CurClaimStatus) = 'WON' 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET    LiabilityRemoved = 0 WHERE LiabilityRemoved < .01 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET    LiabilityRemoved = 0 WHERE LiabilityRemoved = null 

UPDATE COMP_REPORT_DETAIL_STAGING 
SET    RemainingBenCharges = cast(PotentialBenefitCharge as dec) - cast(TotalBenCharges as dec) - cast(LiabilityRemoved as dec) 




-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 



DELETE FROM COMP_REPORT_SUMMARY 


DECLARE @Total int 
DECLARE @PT int 
DECLARE @FC int 
DECLARE @UC int 

SET @Total = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING) 
SET @PT = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(CurClaimStatus) <> 'NON-PROTESTABLE') 
SET @FC = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(CurClaimStatus) = 'WON') 
SET @UC = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(CurClaimStatus) = 'LOST') 

INSERT INTO COMP_REPORT_SUMMARY (TotalClaims) VALUES (@Total) 

----------UPDATE COMP_REPORT_SUMMARY ----------------------------------------------------------------------------------------------------------------------- REMOVE FOR AGGREGATE REPORTS 
----------SET Client = (SELECT DISTINCT CompanyName FROM COMP_REPORT_DETAIL_STAGING) 

UPDATE COMP_REPORT_SUMMARY 
SET FromDate = @Date1 

UPDATE COMP_REPORT_SUMMARY 
SET ToDate = @Date2 

UPDATE COMP_REPORT_SUMMARY 
SET ProtestableClaims = @PT 

UPDATE COMP_REPORT_SUMMARY 
SET  NonProtestableClaims = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(CurClaimStatus) = 'NON-PROTESTABLE') 

UPDATE COMP_REPORT_SUMMARY 
SET FavorableClaims = @FC 

UPDATE COMP_REPORT_SUMMARY 
SET UnfavorableClaims = @UC 

IF @Total > 0 
    BEGIN 
     UPDATE COMP_REPORT_SUMMARY 
     SET ProtestableToTotal = CAST(ProtestableClaims as decimal)/CAST(TotalClaims as decimal) 
    END 

UPDATE COMP_REPORT_SUMMARY 
SET PendingClaims = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(CurClaimStatus) = 'PENDING') 

IF @PT > 0 
    BEGIN 
     UPDATE COMP_REPORT_SUMMARY 
     SET PendingToProtestable = CAST(PendingClaims as decimal)/CAST(ProtestableClaims as decimal) 
    END 

IF @FC + @UC > 0 
    BEGIN 
     UPDATE COMP_REPORT_SUMMARY 
     SET WinRatioProtestable = CAST(@FC as decimal)/(CAST(@FC as decimal) + CAST(@UC as decimal)) 
    END 

UPDATE COMP_REPORT_SUMMARY 
SET BoardAppeals = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(BoardAppealDate) <> '') 

UPDATE COMP_REPORT_SUMMARY 
SET Hearings = (SELECT COUNT(*) FROM COMP_REPORT_DETAIL_STAGING WHERE RTRIM(HearingDate) <> '') 

UPDATE COMP_REPORT_SUMMARY 
SET PotentialLiability = (SELECT SUM(PotentialBenefitCharge) FROM COMP_REPORT_DETAIL_STAGING) 

UPDATE COMP_REPORT_SUMMARY 
SET LiabilityRemoved = (SELECT SUM(LiabilityRemoved) FROM COMP_REPORT_DETAIL_STAGING) 

UPDATE COMP_REPORT_SUMMARY 
SET LiabilityRemaining = (SELECT SUM(RemainingBenCharges) FROM COMP_REPORT_DETAIL_STAGING) 

UPDATE COMP_REPORT_SUMMARY 
SET TotalCharges = (SELECT  SUM(BENEFIT_CHARGES.Charges) 
      FROM   BENEFIT_CHARGES INNER JOIN 
            CLAIMS ON BENEFIT_CHARGES.ClaimID = CLAIMS.ClaimID INNER JOIN 
            CLIENTS ON CLAIMS.ClientID = CLIENTS.ClientID 
      WHERE  (CLIENTS.ClientID > 1000) AND (CAST(CLAIMS.ClaimDate as datetime) between @Date1 AND @Date2) 
         AND (BENEFIT_CHARGES.Charges > 0)) 

UPDATE COMP_REPORT_SUMMARY 
SET TotalCredits = (SELECT  SUM(BENEFIT_CHARGES.Charges) 
      FROM   BENEFIT_CHARGES INNER JOIN 
            CLAIMS ON BENEFIT_CHARGES.ClaimID = CLAIMS.ClaimID INNER JOIN 
            CLIENTS ON CLAIMS.ClientID = CLIENTS.ClientID 
      WHERE  (CLIENTS.ClientID > 1000) AND (CAST(CLAIMS.ClaimDate as datetime) between @Date1 AND @Date2) 
         AND (BENEFIT_CHARGES.Charges < 0)) 


SELECT COUNT(*) AS RC FROM COMP_REPORT_DETAIL_STAGING 
+0

應該有更多的錯誤消息比。發佈整個輸出。 – 2015-01-09 19:57:15

+0

錯誤8152表示字符串或二進制文件將被截斷,如果您單擊該錯誤,它會將您帶到關閉行,檢查列的大小和輸入值。 – radar 2015-01-09 19:58:14

回答

0

的錯誤意味着你試圖把一個值表是比列可以較大保持。即您要將varchar(100)插入已定義爲varchar(80)的列中。

註釋掉插入語句的插入部分,然後在ssms中運行proc以確認select語句返回的內容。

希望有幫助

+0

Spock,我檢查過我的表格,它與我的存儲過程完全匹配。我很困難,需要幫助。謝謝 – Newbie 2015-01-10 18:47:48