2010-07-08 9 views
2

select into을 변수의 원래 값과 함께 select 문의 where 절의 일부로 사용하여 변수의 값을 변경할 수 있습니까?오라클 : where 절에 사용되는 변수로 선택

는 EI는 다음과 같은 코드가 작동 예상하는 것처럼 :

declare 
v_id number; 
v_table number; --set elsewhere in code to either 1 or 2 
begin 
    select id into v_id from table_1 where name = 'John Smith'; 
    if(v_table = 2) then 
    select id into v_id from table_2 where fk_id = v_id; 
    end if; 
end; 
+0

... 재미있는 아이디어입니다. 나는 시도하지 않았지만 왜 안 보이지 않는지. * 시도해 봤어? 무슨 일이야? – FrustratedWithFormsDesigner

+0

나는 그것을 시도하고 그것이 작동하는 것처럼 보였다. 나는 항상 * 일할 것이라는 것을 아는 사람을 찾고 있습니다. 특정 (알 수없는) 경우에만 작동하도록 할 여유가 없습니다. –

답변

3

작동합니다. 너 해봤 어? 어떤 문제?

구문 분석 후 select 문에는 v_id가있는 바인드 변수가 있어야합니다. 대체는 명령문이 실제로 실행될 때 수행됩니다.

편집 : 오라클은 쿼리에 상수를 사용하지 않는 한 바인드 변수를 사용하여 구문을 구문 분석합니다. DBMS는 구문 분석없이 여러 값으로 동일한 기본 쿼리를 재사용 할 수 있습니다. . 바인드 변수의 전체 개념은 파싱 된 쿼리에 값을 런타임으로 대체하는 것입니다. 이 방법으로 생각해보십시오. 쿼리를 처리하려면 모든 값을 알아야합니다. 엔진으로 보내면 오라클은 작업을 수행하고 결과를 반환합니다. 입력 값에서 출력 값을 처리 할 수있는 방법이없는 일련의 프로세스입니다.

+0

작동했습니다. 그러나, 내 관심은 이것입니다 : 항상 작동 할 것입니까? –

+0

IE는 바인드 변수를 사용하고 명령문 실행이 완료된 후에 대체 할 것을 알고 있습니까? 나는 그저 시간의 일부만 작동하도록 할 여유가 없다. ... –

+0

밤에 잠을 자면 두 개의 다른 변수를 사용한다 .-) – DCookie

관련 문제