2016-11-24 3 views
-1

나는 'batch_name'이 매개 변수 인 쿼리를 작성하고 있는데, 한 번만 배치 이름을 얻었고 때로는 2 개 이상의 배치 이름을 얻을 수 있습니다. 어떻게 문자열의 가변 길이를 매개 변수화하는 방법은 무엇입니까?

Select * from pay_batch_headers pbh Where UPPER(pbh.batch_name) = UPPER(:p_batch_name)

지금이 쿼리는 하나의 배치 이름을 처리 할, 나는 그것이 여러 배치 이름을 처리하려면, 여기

내 쿼리입니다 오라클 BI 게시자 쿼리에서이 문제를 처리 할 수 ​​있습니다.

something Where UPPER(pbh.batch_name) IN ('Batch1','Batch2','Batch3') 그러나 IN 절을 사용하는 데 문제가있어서 쿼리해야하는 배치 수를 예측할 수 없습니다. 어느 누구도 제발 도와 줄 수 없나요?

+0

MySQL 또는 Oracle? 그들은 다른 것들입니다. –

+0

@RichBenner 그 오라클 – Raghu

답변

1

두 가지 선택 사항이 있습니다. 하나는 regexp_like()로, 어떤 방법을 문자열로 함께 변수로 찾으면하고 사용하는 것입니다 '^abc|def|ghi|jkl$' :

where regexp_like(upper(pbh.batch_name), ??) 

매개 변수 문자열은 같아야합니다. 원하는만큼 오래 할 수 있습니다.

또 다른 방법은 execute immediate을 사용하는 것입니다. IN을 사용하여 값을 문자열로 SQL 쿼리에 덤프하십시오. 이 방법의 장점은 인덱스를 더 쉽게 사용할 수 있다는 것입니다.

+0

제가 첫 번째 해결책을 찾고 있었는데, 여기서 나는 어디에서 매개 변수'p_batch_name'을 전달할 수 있습니까? 쿼리는'Select * from pay_batch_headers pbh 처럼 보일 것입니다. regexp_like (upper (pbh.batch_name), ??); ' – Raghu

+0

고맙습니다. 내 매개 변수 : p_batch_name – Raghu