Eu estou em casa agora... não da pra testar... mas tente fazer assim:
create or replace function teste1() return int is CURSOR ref1 (str varchar2(1000)) IS SELECT cod from teste WHERE nome in (str); BEGIN str := '''rodrigo''' || ',' || '''teste'''; FOR rec1 (str) IN ref1 LOOP DBMS_OUTPUT.PUT_LINE(rec1.cod); END LOOP; return 1; END; Dependendo do que você quer fazer, da pra você utilizar o EXECUTE IMMEDIATE. Amanhã eu dou uma olhada no trabalho e te dou um toque. On 1/15/07, Digao <[EMAIL PROTECTED]> wrote: > > Olá pessoal, tudo bem? Estou fazendo uma função em plsql, e estou com > problemas com um cusor. > Tenho um cursor que faz um select filtrando com o IN. Porém, os valores do > IN, eu monto durante a plsql: > > create or replace function teste1() return int is > valor int; > str varchar2(1000); > CURSOR ref1 IS SELECT cod from teste WHERE nome in (str); > BEGIN > str := '''rodrigo''' || ',' || '''teste'''; > OPEN ref1; > > LOOP > FETCH ref1 INTO valor; > EXIT WHEN ref1%NOTFOUND; > DBMS_OUTPUT.PUT_LINE(valor); > END LOOP; > > CLOSE ref1; > return 1; > END; > > Para montar a lista do IN, eu faço vários cálculos. > > Qual o erro? A função executa mas não printa os valores. Se eu colocar > apenas 1 valor na string str, funciona... mas quando concateno a string, não > funciona. > Já tentei concatenar sem aspas, com 1 aspa, com 3 aspas e nada... Já > deixei a string no formato: 'rodrigo','teste' e também nada... > > Alguém tem alguma idéia? > > Obrigado a todos > > ------------ > Rodrigo (Digao) > > > --------------------------------- > Yahoo! Search > Música para ver e ouvir: You're Beautiful, do James Blunt > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]