No artigo de hoje vou demonstrar como utilizar uma função Oracle que retorna um refcursor no reporting services. Utilizaremos:
- Oracle database versão 10g
- Reporting services versão 2008
1. Vamos montar uma função no banco Oracle que retorne um refcursor. Abaixo segue um exemplo simples de retornar uma lista de empregados e o parâmetro informado será a quantidade de linhas:
create or replace function fteste(p_qtde_registro in number) return sys_refcursor is rc sys_refcursor; begin open rc for select id,nome from emp where rownum <= p_qtde_registro; return rc; end;
2. A a função Ftesteestá compilada no banco de dados – conforme o item anterior. Dentro do reporting services vamos criar um dataset do tipo stored procedure e colocar o nome da função criada que no caso é Fteste:
3. Como a função Fteste tem parâmetro, automaticamente o reporting services criará esse mesmo parâmetro com o mesmo nome no relatório e os campos mencionados também virão assim (no caso são o id e o nome).
4. Arraste objeto table no relatório e vincule-o ao dataset criado:
5. Para vincular a table ao dataset basta entrar nas propriedades e colocar no nome do dataset no item Datasetname, conforme mostrado abaixo:
6. Para executar o relatório basta clicar na aba Preview. Será requisitado o valor do parâmetro, conforme a figura abaixo:
7. Ao colocar o valor 5, por exemplo, e clicar em View Report, você terá o seguinte resultado do relatório: