Neste documento será explicado e exemplificado o mecanismo de execução de Stored Procedures no RM Reports, tal qual informações de prioridade, execução e afins.
No caso de controles de StoredProcedure apontados para a mesma StoredProcedure, esta será executada apenas uma vez.
Para exemplificar, abaixo está demonstrado um relatório contendo 5 controles de StoredProcedure, todos apontados para a mesma StoredProcedure, de nome ATUALIZAR_CONTADOR. Esta Procedure tem como função inserir em uma tabela criada apenas para este exemplo, a contagem de registros que possuem na tabela naquele momento:
CREATE TABLE EXEMPLO( CONTAGEM INT ) GO CREATE PROCEDURE ATUALIZAR_CONTADOR AS BEGIN INSERT INTO EXEMPLO SELECT COUNT(*) FROM EXEMPLO END GO |
Ao executar o relatório, podemos notar que, apenas de todas as bandas serem carregadas corretamente, apenas um registro foi realizado na tabela EXEMPLO, justamente pelo fato da StoredProcedure ter sido executada apenas uma vez:
No RM Reports, uma StoredProcedure será sempre executada ANTES dos dados relacionados à banda serem buscados na base de dados ou resolvidos e carregados no relatório, independentemente de onde forem posicionados.
Isso quer dizer que posicionar um controle de StoredProcedure no Cabeçalho, Rodapé ou no próprio Detalhe não o fará ser executado naquela ordem específico.
Isso ocorre porque o mecanismo de execução do RM Reports é arquiteturado para considerar que StoredProcedures sempre deverão ser executadas antes de qualquer busca de dados atrelados à banda ao qual pertence àquele controle de StoredProcedure
Para exemplificar, abaixo está demonstrado um relatório contendo 3 controles de StoredProcedure,