Parâmetro no Cursor

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
flebrao
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 116
Registrado em: Seg, 10 Abr 2006 4:46 pm
Localização: Santa Bárbara D'Oeste

Boa Tarde pessoal...
Minha dúvida é a seguinte, eu posso fazer um cursor que recebe parametros? No exemplo abaixo tenho que fazer o select ordenando pelo campo segment1 em ordem ASC, mas não funciona, alguém poderia me dar um help?

Selecionar tudo

CURSOR C_DADOS IS
  SELECT SEGMENT1
       , DESCRICAO
       , ATTRIBUTE10
       , ITEM
       , MATERIAL
       , CFD
       , CII
       , MAO_OBRA
       , VR_SET
    FROM R_CST_029
   WHERE SESSION_ID = P_SESSION_ID
   ORDER BY PARAMETRO;
R_DADOS C_DADOS%ROWTYPE;


Desde Já agradeço.
Fábio
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dessa forma que você colocou, não é possível.
(Apenas no Reports ou SQL*Plus que existe variável de substituição).

Mas dentro de um PL/SQL é possível de outras formas, veja:

Selecionar tudo

CURSOR C_DADOS IS
  SELECT SEGMENT1
       , DESCRICAO
       , ATTRIBUTE10
       , ITEM
       , MATERIAL
       , CFD
       , CII
       , MAO_OBRA
       , VR_SET
    FROM R_CST_029
   WHERE SESSION_ID = P_SESSION_ID
   ORDER BY decode (parametro, 1, segment1
                             , 2, descricao
                             , 3, mao_obra
                   ); 
Observe que o parâmetro vai indicar qual campo será feito ORDER BY, atraves de um DECODE.

Outra forma, é montar um SQL dinâmico, mas eu sempre prefiro dessa forma acima. :-o
flebrao
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 116
Registrado em: Seg, 10 Abr 2006 4:46 pm
Localização: Santa Bárbara D'Oeste

Obrigado Dr_gori.. funciono direitinho...

Valeus :-o
Fábio Lebrão
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes