narchise
1k
2017-09-14 18:57:56.0 작성 2017-09-14 19:03:07.0 수정됨
3
142

Mybatis에서는 쿼리문이 작동 안하는데 SQL developer에서는 작동을 합니다. 뭐가 문제일까요? ㅠㅠ


DELETE ASSIGNEDCOPY WHERE SUESEQ = ? AND ALSEQ = ? AND CLESEQ = ? 

 265(String), J000000(String), 920(String)

Updates: 0


Mybatis 로그에서 이렇게 뜹니다. Map으로 받아서 사용중이고 파라미터는 정상적으로 다 뜹니다.


이걸 고대로 SQL 디벨로퍼에서 돌려봣습니다.


DELETE ASSIGNEDCOPY WHERE SUESEQ = '265' AND ALSEQ = 'J000000' AND CLESEQ = '920';

 

SQL 디벨로퍼에서 고대로 돌려봤는데 이건 작동 합니다. 미치겠습니다.


CLESEQ가 문제가 되는거 같은데 타입이 char고   예를들자면 KISD121 이런것을 CLESEQ로

가지고 있으면 문제없이 지워집니다. 다만 숫자(210,220 이런거)가 들어가면 안지워지네요.  


뭐가 문제인지 모르겠습니다..



0
0
  • 답변 3

  • xxrcn11
    991
    2017-09-14 22:11:48.0

    숫자형일 경우 그대로 입력이 되서 발생하는 것으로 예상됩니다.

    먼저 CLESQ 바인딩 하는 곳 앞 뒤에 ''을 붙여서 number가 아닌 varchar로 바꿔서 해 보세요

    이게 맞으면 Map의 value 타입을 String으로 해서 적용해보시기 바래요

    0
  • narchise
    1k
    2017-09-15 08:25:35.0

    //xxrcn11

    퇴근하고 지금 봤네요.

    말씀하신게 맞는거 같습니다.

    변수를 상수 처리해서 돌리니깐 제대로 돌아가네요. 

    #{} 를 ${} 로 바꾸어서 처리하게 만들었습니다.

    답변 감사합니다.

    ps. '' 를 붙이라는 것은  ' || #{} || '   이런식으로 처리해야 하나요?? -_-a

    0
  • xxrcn11
    991
    2017-09-15 08:52:59.0

    네 맞습니다.

    다만 데이터의 값이 String 또는 숫자형이 나타날 수 있다면 숫자형을 String형으로 변경하는 것도 

    고려해 보세요.

    즐 코딩하세요 ^^

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