2014-03-13 2 views
0

오라클 쿼리 (그냥 쿼리) 을 써야 테이블에서 값을 선택할 수 있습니다. 발견되지 않으면 다른 테이블에서 선택하십시오.오라클 값이없는 경우 테이블에서 선택하십시오.

pl/sql에서이 작업을 수행하는 데 도움이 필요합니까?

+0

PL/SQL 기능 또는 일반 SQL 문을 찾고 있습니까? 데이터 존재 테스트에서 두 쿼리가 서로 다른 점은 무엇입니까? 그것은 하나의 열 또는 여러 가지 열입니까? – woemler

+0

pl/sql 쿼리 및 많은 열을 반환합니다. – user3401058

답변

2

SELECT *를 firstTable FROM

UNION ALL

SELECT *에게 secondTable FROM WHERE (FIRST_TABLE FROM SELECT COUNT (*)) = 0

0

블록 내에 SELECT 문을 묶고 예외 처리기를 추가 할 수 있습니다.

따라서 첫 번째 테이블에서 선택된 행이없는 경우 두 번째 테이블에서 선택하십시오.

Begin 
    select <many columns> into <many variables or row type> 
    From Table1 
    where <conditions>; 
EXCEPTION 
    WHEN NO_DATA_FOUND THEN 

    select <many columns> into <many variables or row type> 
    From Table2 
    Where <Conditions>; 
End; 

참고 :

Another related SO question

Exception Handlers

여기 Documentation for the SELECT INTO statement

0

가 수행하는 PL/SQL 함수의 예입니다 구조는 다음과 같은 것 테스트 한 다음 테스트 결과에 따라 보조 쿼리를 실행합니다. 당신은 당신의 요구에 맞게 조정할 수 있습니다 :

set serveroutput on; 

declare 
    row_count number; 
    column1 varchar(10); 
    column2 varchar(10); 
    column3 number; 

begin 

    /*Perform your test*/ 
    select count(target_column) into row_count 
    from my_table 
    where condition_column = 'x'; 

    /*Run your secondary query based on the output of the first*/ 
    if row_count > 0 then 
    select 
     col_x into column1, 
     col_y into column2, 
     col_z into column3 
    from my_other_table_A; 
    else 
    select 
     col_a into column1, 
     col_b into column2, 
     col_c into column3 
    from my_other_table_B; 
    end if; 

    /*Show the results*/ 
    dbms_output.put_line('column1: ' || column1); 
    dbms_output.put_line('column2: ' || column2); 
    dbms_output.put_line('column3: ' || column3); 

end; 
/
관련 문제