Utilizando função Oracle com refcursor no reporting services
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:
Tela do report data para criar um novo data set com botão direito do mouse
Tela de propriedades do dataset onde informa o nome do dataset, data source e da função
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).
Tela do Report data exibindo os parâmetros
4. Arraste objeto table no relatório e vincule-o ao dataset criado:
Tela do relatório com o objeto table
5. Para vincular a table ao dataset basta entrar nas propriedades e colocar no nome do dataset no item Datasetname, conforme mostrado abaixo:
Tela de propriedades do objeto table
6. Para executar o relatório basta clicar na aba Preview. Será requisitado o valor do parâmetro, conforme a figura abaixo:
Tela de preview do relatório exibindo o campo de parâmetro
7. Ao colocar o valor 5, por exemplo, e clicar em View Report, você terá o seguinte resultado do relatório:
Resultado do relatório exibindo 5 linhas conforme informado no parâmetro