database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41221 게시물 읽기
No. 41221
오라클 프로시저에서 in 변수로 던진값 사용법문의입니다
작성자
초보자
작성일
2016-08-26 10:13
조회수
7,068

프로시저를 호출할때  P_KEY_VALUE_4  이라는 IN 변수에  데이터를 
001,002
003,005,006 
등등 단수개나 복수개로 값을 위와같은형태로 던집니다..

여기서 질문이있습니다
프로시저내부에서 update 문이있는데요

UPDATE TEST
   SET A = '1'
 WHERE CODE IN (P_KEY_VALUE_4)

이런식으로 정의를 하였는데
UPDATE 가 작동하지를 않네요

원인이
UPDATE TEST
   SET A = '1'
 WHERE CODE IN ('001,002')

이런식으로 변수값 양옆에 ' 따옴표 기호가 자동으로 들어가서 저런값이 없어서
안되는것같은데...

받은변수값을 쓸때  양옆에 ' 작은따옴표 없애는 방법이 있을까요...감사합니다 ㅠ

이 글에 대한 댓글이 총 1건 있습니다.

in 파라미터에에 '001,002' 값이

 

code in (P_KEY_VALUE_4) 여기서는

 

말 그대로 code in ('001,002') 가 됩니다.

 

code 값이 '001,002' 문자 그 자체인 것을 찾는 것이죠.

 

code 값이 아래와 같다면

 

001

002

001,002 -> 이녀석인 걸 찾겠다는 것이죠.

 

의도하시는 바와 같이 code 값이 001인것, 002인것을 update 하는 것으로

 

만드시려면

 

UPDATE TEST

SET A = '1'

WHERE CODE IN (SELECT REGEXP_SUBSTR(P_KEY_VALUE_4, '[^,]+', 1, LEVEL)

FROM DUAL

CONNECT BY LEVEL <= REGEXP_COUNT(P_KEY_VALUE_4, ',') + 1)

 

이런식으로 해주셔야죠.

손재균(iikii)님이 2016-08-26 11:26에 작성한 댓글입니다.
이 댓글은 2016-08-26 11:29에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41224이 쿼리 도움 부탁드립니다 [3]
매수신호
2016-08-26
7609
41223양쪽방향에 따른 계산 그리고 결과(도와주세요) [10]
기쁨이
2016-08-26
7545
41222oracle procedure subquery 사용 [2]
김정환
2016-08-26
6807
41221오라클 프로시저에서 in 변수로 던진값 사용법문의입니다 [1]
초보자
2016-08-26
7068
41220left join 시 조건 [1]
궁금이
2016-08-25
6599
41219outer join 질의 [1]
홍도영
2016-08-25
6779
41218도와주세요 [1]
울산
2016-08-23
6621
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다