Like com parametro no pls/sql

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Boa tarde Glufke´s,
Td bom com vocês?
Segue uma pequena dúvida...tenho duas colunas varchar2 de uma tabela xpto..hihih
A primeira coluna é abreviação do nome e a segunda o nome completo!!

Não exisite PK!!

Selecionar tudo

col a           col b
---------      ----------
CD             CODIGO
TI             TECNOLOGIA
.
.
.ETC
A dúvida que estou tendo e a seguinte:
Estou recebendo um parametro dentro de um FOR

exp :

Selecionar tudo

for x in (select col_a , col_b where col b = p_col_b)
O problema é que é varchar e não numerico :roll: !!
Eu não estou conseguindo colocar aspas simples!!
quando eu coloco as aspa simples com o p_col, o plsql traduz a consulta

Selecionar tudo

= 'p_col_b' 
e não ao parametro contido nele :shock:

Se retiro as aspas, o oracle não entende, porque é varchar e não numerico!!

Alguém já passou por essa situação ?

Abs de seu amigo Hahu :) -m
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

Nesses casos, você tem que DECLARAR o cursor explicitamente.

Selecionar tudo

declare
  Cursor C_SeuCursor(p_col_b  varchar2 ) Is
  (select col_a , col_b where col b = p_col_b) ;

  r_SeuCursor  C_SeuCursor%RowType;
  
begin

  for C_SeuCursor( 'asdf' ) 
  loop
     .
     .
     .
  end loop.
end;
Tenta isso :-D
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Fala dr_gori,
Boa tarde amigo :)

Eu coloquei um DECODE na clausula where!!
Resolveu temporariamente...porque se a lista crescer daee tenho que alterar a procedure :cry:

Será que tem alguma maneira, de utilizar uma váriavel que alimente o decode, apartir da lista que ira crescer..porque daee ficaria dinâmico!!
Eee eu nem preocuparia com as inclusões na Tabela!!

Valeu pela ajuada amigo!!
Abs Hahu ;)
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Hahu, beleza brother.

Uma questão?

Um IN não resolveria teu problema?
Caso negativo, talvez um SELECT dinâmico? (DBMS_SQL)?
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Fala trevisolli,

Bom dia!

Com o IN resolveu meu problema..valeu amigo :D -m

Abs de seu amigo Hahu
Responder
  • Informação
  • Quem está online

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