dev_julystar
102
2020-02-14 10:03:13
2
109

mssql 데이터 형식 변환 실패 에러


현재 중복을 제거하는 프로시저를 작성 중인데 일부 부분에서 계속 반복적으로

에러가 발생하여 여쭤보려고 합니다.


DECLARE @START_CB varchar(20)

DECLARE @END_CB varchar(20)

        

        SET @START_CB = '1464'

        SET @END_CB = '1464'


        WHILE @START_CB <= @END_CB


                 BEGIN

                          DECLARE @Table_ID varchar(20)

                         DECLARE @userSql varchar(7000)

                         DECLARE @Cus_No INT

                         DECLARE @Inv_Count INT

                         DECLARE @Inv_Num INT


                         SET @Table_ID = 'CB' + REPLICATE(0, 5 -LEN(@START_CB)) + @START_CB



                         select @Cus_No = Cus_No from Comm where CB_ID = @Table_ID

                         select @Inv_Num = Count(*) from Inverter_Sales where Cus_No = @Cus_No


                         SET @Inv_Count = 1

                         WHILE @Inv_Count <= @Inv_Num              

                         BEGIN


SET @userSql = 'DELETE FROM '+@Table_ID+'_Alert WHERE err_no in (SELECT A.err_no FROM '+@Table_ID+'_Alert A INNER JOIN

(SELECT Max(err_no) as errno, Err_Date FROM '+@Table_ID+'_Alert where inv_seqnum = '+@Inv_Count+' GROUP BY Err_Date

HAVING Count(*) > 1) B ON A.Err_Date = B.Err_Date and A.err_no <> B.errno and inv_seqnum = '+@Inv_Count+' );'


위와 같이 구현해서 실행시키는데

varchar 값 'DELETE FROM CB01464_Alert WHERE err_no in (SELECT A.err_no FROM CB01464_Alert A INNER JOIN (SELECT Max(err_no) as errno, Err_Date FROM CB01464_Alert where inv_seqnum = '을(를) 데이터 형식 int(으)로 변환하지 못했습니다. 라는 에러가 반복적으로 발생합니다.

어떤 부분이 문제인지 여쭤보고 싶습니다...


0
0
  • 답변 2

  • sac89
    451
    2020-02-14 10:07:36 작성 2020-02-14 10:08:51 수정됨

    @Inv_Count 가 INT형이라서 그런것 같습니다 convert로 형변환 후 해보시겠어요??

    제가 알기론 int가 우선순위기 때문에 발생하는 문제같네요.

    0
  • dev_julystar
    102
    2020-02-14 11:56:19

    @sac89님

    감사합니다. Convert 사용해서 형변환 시키니 문제없이 돌아가네요^^

    맛있는 점식 식사 하세요~

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.