Cute Happy Ghost
본문 바로가기
JAVA/Java error

VALUES 목록은 모두 같은 길이여야 함

by JENN_tech7 2021. 11. 2.
728x90
SMALL

진짜 떄려주고싶었던 오류...

구글에 쳐봐도 

선배님들은 대답이 없었고..

나는 눈물을 뚝뚝흘리며 오류를 고쳐나갔다...

 

 INSERT INTO t_record_amt_life_mrs(
			sts_wst_type
			,tot_amt
			,pp_rcy
			,pp_inc
			,pp_lnd
			,pp_etc
			,sp_rcy
			,sp_inc
			,sp_lnd
			,sp_etc
			,sp_sea
			,sp_exp
			,cs_rcy
			,cs_inc
			,cs_lnd
			,cs_etc
			,cs_sea
			,sts_wst_type_cd
			,fclt_sn
			,fclt_nm
			,sgg
			,fclt_year
			,fclt_mth
			
        ) VALUES 
        	<foreach collection="data" item="data"   separator=",">
			 	( 
			 	  #{data.rcy_cd}
			 		   		/* choose*/
			 	<choose>
				    <when test="data.pp_rcy gt 0">,#{data.pp_rcy}::numeric(9,2)</when>
				    <when test="data.pp_inc gt 0">,#{data.pp_inc}::numeric(9,2)</when>
				    <when test="data.pp_lnd gt 0">,#{data.pp_lnd}::numeric(9,2)</when>
				    <when test="data.pp_etc gt 0">,#{data.pp_etc}::numeric(9,2)</when>
				    <when test="data.sp_rcy gt 0">,#{data.sp_rcy}::numeric(9,2)</when>
				    <when test="data.sp_inc gt 0">,#{data.sp_inc}::numeric(9,2)</when>
				    <when test="data.sp_lnd gt 0">,#{data.sp_lnd}::numeric(9,2)</when>
				    <when test="data.sp_etc gt 0">,#{data.sp_etc}::numeric(9,2)</when>
				    <when test="data.sp_sea gt 0">,#{data.sp_sea}::numeric(9,2)</when>
				    <when test="data.sp_exp gt 0">,#{data.sp_exp}::numeric(9,2)</when>
				    <when test="data.cs_rcy gt 0">,#{data.cs_rcy}::numeric(9,2)</when>
				    <when test="data.cs_inc gt 0">,#{data.cs_inc}::numeric(9,2)</when>
				    <when test="data.cs_lnd gt 0">,#{data.cs_lnd}::numeric(9,2)</when>
				    <when test="data.cs_etc gt 0">,#{data.cs_etc}::numeric(9,2)</when>
				    <when test="data.cs_sea gt 0">,#{data.cs_sea}::numeric(9,2)</when>
				</choose>
			 		   		/* choose*/
			 	, #{data.pp_rcy}::numeric(9,2)
			 	, #{data.pp_inc}::numeric(9,2)
			 	, #{data.pp_lnd}::numeric(9,2)
			 	, #{data.pp_etc}::numeric(9,2)
			 	, #{data.sp_rcy}::numeric(9,2)
			 	, #{data.sp_inc}::numeric(9,2)
			 	, #{data.sp_lnd}::numeric(9,2)
			 	, #{data.sp_etc}::numeric(9,2)
			 	, #{data.sp_sea}::numeric(9,2)
			 	, #{data.sp_exp}::numeric(9,2)
			 	, #{data.cs_rcy}::numeric(9,2)
			 	, #{data.cs_inc}::numeric(9,2)
			 	, #{data.cs_lnd}::numeric(9,2)
			 	, #{data.cs_etc}::numeric(9,2)
			 	, #{data.cs_sea}::numeric(9,2)
			 	, #{data.sts_wst_type_cd}
	        	<foreach collection="info" item="info"  separator=",">
				 	, #{info.fclt_sn}::int 
				 	, #{info.fclt_nm}
				 	, #{info.sgg}
				 	, #{info.fclt_year}
				 	, #{info.fclt_mth}
				 	)
				</foreach>
			</foreach>

이런 뭐 길고도 긴 쿼리문을 짰었는데 (나에겐 이게 한계였다...)

foreach구문을 쓰면서 value들이 n개씩 저장이 되었는데 그 value들의 값의 길이가 똑같아야 한다는 것이다

대충 머리로는 이해했는데 어디에서 뻑나는지를 못찾았다

컬럼들이 워낙 많아서 (나한테는 많은겁니다....) 메모장에 일일이 붙혀보고 주석달면서 찾아냄;;

chosse문 안에서 저 조건문들의 이외의 값이 안들어가서 길이가 안맞았던것,,,

그러니,,, 그냥 

 

<otherwise>,0</otherwise>

 

하나만 추가해주니 완...

저것도 <otherwise>0</otherwise> 처음엔 이렇게 써서 당연히 오류가 났었고 ㅋㅋㅋㅋㅋ

생각하자 생각!!!!!!

728x90
LIST

댓글