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

Deixe um comentário