PL/SQL 조언 좀 부탁드립니다 0 2 1,306

by 겨울눈 [PL/SQL] [2019.09.13 16:52:25]


PL/SQL 변수로는 1^2^3^ 이런식으로 변수를 넘겨 주고

실제값은 1, 2, 3 입니다 

A라는 테이블에서 컬럼 B의 값 1, 2, 3에 해당하는 조건으로 셀럭트를 하고 싶은데

tmp SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); <-이런 변수를 만들고

여기에 값을 넣어줘서 

B in  (SELECT * FROM tmp) 

이런 방식으로 하니 알 수 없는 오류(ORA-00600: 내부 오류 코드, 인수:)가 뜨고 임시테이블에 값을 넣어서 select 하는 방식으로 하니 sql문제는 없는데 엄청 느리고

또 동적쿼리로 바꾸려니 엄두가 안 나네요.

이 방법들 말고 좋은 방법 없을까요?

by 농부지기 [2019.09.16 09:29:36]

위 질문에서 테이블, 컬럼 예시를 하신게 잘 이해가 안가네요.
일단, 정규식 예제를 하나 올려볼게요.  충분히 활용하실 수 있을거 같네요.

SELECT *
  FROM DUAL
 WHERE DUMMY IN (
					SELECT regexp_substr(A.TXT, '[^^]+', 1, LEVEL) TXT
					   FROM (SELECT '1^2^3^4' TXT FROM dual) A
					CONNECT BY LEVEL <= length(regexp_replace(A.TXT, '[^^]+',''))+1
			     )

 


by 겨울눈 [2019.09.17 09:13:09]

감사합니다! 지금 확인했습니다

활용해볼게요~

이 예제로 SQL 완성 될 것 같습니다.

정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입