Astaroth 0 Denunciar post Postado Outubro 8, 2008 Galera, Tenho o seguinte caso tenho uma procedure q é lida por varios clientes diferente, acontece que um desses clientes quer algo que só vai atender ele, lendo tabelas que so vao existir pra ele. Portanto, nessa minha procedure existe uma verificacao que indica se é esse tal cliente, se for, com um 'Execute Immediate' eu chamo uma outra procedure que me retorna o "cursor" com essa regra especifica. Acontece que nao consigo retornar nada de PL com o EXECUTE IMMEDIATE.. Portanto retorno um SQL(ex: "select 1 from table" ) normal dentro de uma variavel.. A partir dessa variavel abro o cursor, portanto o codigo fica da seguinte forma: IF condicao = true THEN -- retorna cursor especifico EXECUTE IMMEDIATE 'CALL ' || v_nome_da_prov || ' ' (:x, :b, :c)' USING IN x, IN b, OUT c; OPEN cursor_especifico FOR c; ELSE -- cursor normal OPEN cursor; END IF; LOOP IF cursor%ISOPEN THEN FETCH cursor_especifico INTO rRetorno; EXIT WHEN cursor_especifico%NOTFOUND; ELSIF cursor_especifico%ISOPEN THEN FETCH cursor_especifico INTO rRetorno; EXIT WHEN cursor_especifico%NOTFOUND; END IF; --REGRAS END LOOP; IF cursor%ISOPEN THEN CLOSE cursor; ELSIF cursor_especifico%ISOPEN THEN CLOSE cursor_especifico; END IF; Como pode ver tenho que ficar vendo qual cursor esta aberto para determinar qual sera usado.. Minha dúvida e se existe alguma maneira mais dinamica de se fazer isso.. Uso o Oracle 9i.. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 10, 2008 Creio já ter visto este assunto neste fórum , tentou no Busca ? Compartilhar este post Link para o post Compartilhar em outros sites