2014-07-09 2 views
0

이것은 내 문제입니다.어떤 값을 기준으로 커서의 조건에 따라 순서를 변경하는 방법

if ord = 'd' then 
    Ordby:= 'name' 
else 
    Ordby:= 'type'. 
end if; 
declare cursor file is 
    select type,name,location, from filemstr order by ordby; 
    begin 
    for i in file 
    loop 
    end; 

문제는 ordby가 작동하지 않습니다. 항상 기본적으로 주문합니다. 변수를 사용하여 주문할 수 있습니까? 다음과 같은 조건으로 주문해야합니다. 커서를 두 번 선언하고 싶지 않습니다.

답변

2
declare cursor file is 
    select type,name,location, from filemstr order by decode(ord,'d',name,type) 
    begin 
    for i in file 
    loop 
    end; 
+0

왜 downvote입니까? 이 두 가지 유효한 접근 방식 중 하나입니다. 다른 하나는 실행 즉시 실행 – Falco

+0

을 통한 동적 SQL입니다. DV를 사용하지 않았지만 마음에 들지 않는 사람은 누구나 유용 할 수 있습니다. –

+0

ord가 작동하려면이 매개 변수가 (커서) 매개 변수 여야합니까? – Sathya

관련 문제