Banco de Dados

19 set, 2012

Utilizando função Oracle com refcursor no reporting services

Publicidade

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