2016-10-20 3 views
0

검색을 수행하는 검색 필드 (대소 문자 구별 없음)를 갖고 관련 값을 테이블 형식으로 반환합니다. 검색이 STOCKCODE, 바코드 또는 이름의 일부를 수행하는 경우Oracle Apex 5 Search, 결과 표시, 일치하는 경우 삽입

select STOCKCODE, BARCODE, NAME from TABLE where regexp_like(NAME, :P1_SEARCH, 'i') or regexp_like(BARCODE, :P1_SEARCH, 'i') or regexp_like(STOCKCODE, :P1_SEARCH, 'i') 

그래서 테이블에 결과를 반환합니다. 검색 문자열과 일치하는 모든 결과를 의미합니다.

일단 내가 원하는 것을 얻으면 행에 수량 값을 추가 한 다음 "추가"버튼을 누릅니다. 이 단추는 프로 시저를 통해 PL/SQL 문을 사용하여 선택을 수행하고 다른 테이블에 삽입합니다.

BEGIN 
insert into TEMP_TABLE (STOCKCODE, NAME, BARCODE) values (:STOCKCODE, :NAME, BARCODE); 
END; 

이 모두 완벽하게 작동하지만, 수많은 검색을 통과하면 일치하는 항목을 찾은 다음, 다음 추가 클릭하여 선택해야 임무가된다. 그래서 나는 다음과 같이하고 싶다. 부분 일치에 대한 검색을 수행하면 결과가 표 형식으로 반환됩니다. 그러나 많은 코드가 알려져 있기 때문에 전체 값 중 하나를 알고 그 값을 표 형식으로 만 표시하지 않고 TEMP_TABLE에 직접 삽입하십시오. 이

select STOCKCODE, BARCODE, NAME from TABLE where regexp_like(NAME, :P1_SEARCH, 'i') or regexp_like(BARCODE, :P1_SEARCH, 'i') or regexp_like(STOCKCODE, :P1_SEARCH, 'i') 
if (NAME=:P1_SEARCH) or (BARCODE=P1:SEARCH) or (STOCKCODE=:P1_SEARCH) then 
insert into TEMP_TABLE (STOCKCODE, NAME, BARCODE) values (:STOCKCODE, :NAME, BARCODE); 
end if; 

어떤 아이디어 같은

뭔가? : D

답변

0

당신은 입력이 전체 일치 여부 페이지로드 및 검사에서 실행되는 페이지를 처리 ​​할 수 ​​:

begin 
    select name, barcode, stockcode 
    into l_name, l_barcode, l_stockcode 
    from table 
    where (NAME=:P1_SEARCH) or (BARCODE=P1:SEARCH) or (STOCKCODE=:P1_SEARCH); 

    -- Full match if no exception raised 
    insert into TEMP_TABLE (STOCKCODE, NAME, BARCODE) 
    values (l_stockcode, l_name, l_barcode); 

    :P1_SHOW_TABFORM := 'N'; 

exception 
    when too_many_rows 
    -- Partial match (more than one match found) 
    :P1_SHOW_TABFORM := 'Y'; 
    when no_data_found then 
    -- No match found 
    (Do whatever you think best here) 
end; 

는 다음 Y로 동일 P1_SHOW_TABFORM에 조건부 tabform 보고서 디스플레이를 만들기를

+0

고마워 공장, 작동합니다. 내 regexp_like가 여전히 작동하도록 약간의 변경을해야했지만 정확히 내가 원하는대로 수행합니다! –