Digão, dá uma olhada neste código, vc monta um Record e utiliza ele com
uma query dinâmica.
CREATE OR REPLACE Function TESTE1
Return Int Is
--str Varchar2(1000);
Type T_Cur1 Is Record
(
Cod Int
);
C_Cur1 T_Cur1;
Type PtypeCur1 Is Ref Cursor;
TypeCur1 PtypeCur1 ;
V_Sql Varchar2(300);
Begin
V_Sql := 'SELECT cod from teste WHERE nome in
(''rodrigo'',''teste'')';
Open TypeCur1 For V_Sql;
Loop
Fetch TypeCur1 Into C_Cur1;
Exit When TypeCur1%Notfound;
DBMS_OUTPUT.PUT_LINE(C_Cur1.Cod);
End Loop;
Close TypeCur1;
return 1;
END;
-----Mensagem original-----
De: [email protected] [mailto:[EMAIL PROTECTED]
Em nome de Bruno Lorenzini
Enviada em: terça-feira, 16 de janeiro de 2007 07:53
Para: [email protected]
Assunto: Re: [oracle_br] Plsql com IN num Cursor
Carinha, testei aqui e realmente não ta funcioando... ele reclama de
fazer
essa montagem "na raça". O que você poderia fazer é usar o comando
"execute
immediate [stmt]" ou então você pode criar uma tabela temporary table
On 1/15/07, Digao <digaopatrocinio@
<mailto:digaopatrocinio%40yahoo.com.br> yahoo.com.br> 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]
[As partes desta mensagem que não continham texto foram removidas]