2016-03-30 24 views
0

STI/sql yordamı için argüman olarak sütun adlarının csv'sini geçiriyorum.pl sql argüman olarak sütunlara göre sıralama geçişi

SET serverOutput ON SIZE unlimited; 
SET linesize 32767; 
declare 
test1 varchar2(30); 
begin 
test1 := 'PARAMETER_NAME,DESCRIPTION'; -- This will be passed as input parameter 
for rCursor in (select * from configurations order by test1 asc) loop 
dbms_output.put_line(rCursor.parameter_name || '-=-' || rCursor.Description); 
-- Output is not ordered by any of these columns 
end loop; 
end; 

Herhangi bir girdi var mı?

+0

Sorunuz "order by" ifadesi test1 sütununa göre, neden verilerinizin parametre adı ve Açıklama sütunlarına göre sıralanacağına inanıyorsunuz? Bu sütunlara göre sıralama yapmak için sorguyu parametre ismine göre sıralamayı değiştirmeniz gerekiyor, Açıklama – elirevach

cevap

2

Statik bir imleç sipariş için bir değişken kullanarak, bu nedenle sonuç olacaktır aynı dinamik olarak imlecin sıralamasını değiştirmek için Değişkeninizi kullanmanız gerekiyorsa, bir şey gerekebilir

select * from configurations order by 'PARAMETER_NAME,DESCRIPTION' 

daha şunun gibi:

declare 
    test1 varchar2(30); 
    rcursor SYS_REFCURSOR; /* define a cursor */ 
    vConfiguration configurations%ROWTYPE; /* define a variable to host the result of your query */ 
begin 
    test1 := 'PARAMETER_NAME,DESCRIPTION'; -- This will be passed as input parameter 
    open rCursor for 'select * from configurations order by ' || test1; /* open a dynamic cursor */ 
    loop 
     fetch rCursor into vConfiguration; /* fetch the cursor into a variable */ 
     exit when rCursor%NOTFOUND;  /* check if the cursor has rows */ 
     dbms_output.put_line(vConfiguration.parameter_name || '-=-' || vConfiguration.Description); 
    end loop; 
end; 
+0

Teşekkürler! Benim ihtiyacım için çalışıyor. –