BI Publisher - Parâmetro para Functions / trigger before

Oracle Business Intelligence, Oracle Warehouse Builder OWB, Oracle Discoverer, BI Publisher, XML Publisher, OLAP, Data Mining, ODI Oracle Data Integrator, etc
Responder
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Pessoal, bom dia.

Estou iniciando na tecnologia, tendo que desenvolver à toque de caixa um relatório na ferramenta BI Publisher para a empresa e, me deparei com um problema e gostaria da opinião dos experts:

Cenário:
Preciso utilizar uma TEMP_TABLE para gerar o meu report.

Erro:
Não consigo passar os parâmetros do meu Data Set para a chamada da procedure, no Event_Trigger.

Solução Encontrada:
Vi num fórum que, para que o parameter que você cria no teu Data Set funcionar, na SPEC da package, deve, obrigatóriamente, ter os mesmos parâmetros, mesmo que sem utilização deles.

Dúvida:
Vocês utilizam desta forma também, ou, fazem algum outro tipo de chamada? Gostaria de trabalhar nas melhores práticas aqui.

Muito obrigado,

Trevisolli
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Sim. É assim mesmo. É meio chato fazer funcionar as triggers no bi publisher. Eu já fiz inúmeras vezes e sempre tenho que olhar num exemplo pra ver como é.

Trevis, eu não estou no meu PC agora. Me pede segunda feira pra postar aqui um exemplo, beleza?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Fala Dr_Gori, blzinha?
quanto tempo... me desculpe a ausência, é que, troquei de emprego e, to numa correria pra aprender o BI Publisher...

Eu fiz aqui umas coisas tb e, vou estar postando uns exemplos..

Mas, como você entende muito mais disso, se puder postar aqui pra gente...

Muito obrigado brother, aquele abraço.

Trevis
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Trévis... É assim: Pra dar certo você tem que seguir a risca o que eu vou colocar abaixo:

NO data-definition do XML, você precisa informar qual é a DefaultPackage e o dataSourceRef, veja como está o meu header: (no meu caso, XG_PKG_AR_002)

Selecionar tudo

 <?xml version="1.0" encoding="UTF-8"?>
<dataTemplate name          ="XG_XML_AR_002" 
              description   ="XG - AR - Relatório de Comissões" 
              dataSourceRef ="APPS" 
              defaultPackage="XG_PKG_AR_002" 
              version       ="1.0">
<parameters> 
  <parameter name="p_gl_period"       dataType="varchar2" />
  <parameter name="p_selecao"         dataType="varchar2" />
  <parameter name="p_tipo_comissao"   dataType="varchar2" />
  <parameter name="p_repres_numero"   dataType="varchar2" />
  <parameter name="p_tipo_ordem"      dataType="varchar2" />
</parameters>

<dataQuery>

<sqlStatement name="Q_DATAS">
<![CDATA[
      select * blablablabla

Repare que eu tenho vários parâmetros. Eu vou utilizar apenas 1 na minha PACKAGE, mas eu preciso "referenciar" todos eles, exatamente como está ali em cima, veja como está a minha package SPEC: (eu criei variáveis na package-spec EXATAMENTE com o mesmo nome dos parametros!!!)

Selecionar tudo

CREATE OR REPLACE PACKAGE xg_pkg_ar_002 IS
--      *****************************************************
--         !!!!!!!!!!!!!!  IMPORTANTE !!!!!!!!!!!!!!!!!!!  
--      *****************************************************
--       Se adicionar mais parametros no XML, deve também  
--             adicionar os mesmos parametros abaixo 
--      *****************************************************

  p_gl_period         VARCHAR2(60);   --MESMO nome do parâmetro vindo do XML Publisher.
  p_selecao           VARCHAR2(100);  --não USADO
  p_tipo_comissao     VARCHAR2(100);  --não USADO
  p_repres_numero     VARCHAR2(100);  --não USADO 
  p_tipo_ordem        VARCHAR2(100);  --não USADO
   


  FUNCTION fnc_xml_before_trigger
  ( p_gl_period  VARCHAR2
  ) RETURN BOOLEAN;
END;
/
Depois disso, basta você colocar la no data-definition a chamada da trigger BEFORE ou AFTER.
(se for after, você precisa colocar depois do <dataStructure>, se for before, é antes! )

Selecionar tudo

.
.
.

</sqlStatement>
</dataQuery>

<dataTrigger name="beforeReport" source="XG_PKG_AR_002.fnc_xml_before_trigger( :p_gl_period )" />

<dataStructure>
  <group name="G_EMPRESA" source="Q_EMPRESA">
    <element name="NOME_EMPRESA"                    value="NOME_EMPRESA" />
  </group>
  <group name="G_DATAS" source="Q_DATAS">
    <element name="DTINI"                           value="DTINI" />
.
.
.
Pronto! Se fizer de acordo com esses passos, tem que dar certo !

:-D
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Fala meu rei, blzinha? Espero q tudo em ordem...

Então brother, obrigado mesmo pelas dicas, mais uma vez...

Pelo que percebi, essa dica que passou, é pro Publisher 10???

É que realizei o processo aqui no 11 e, vou só deixar documentado abaixo como fiz, para quem precisar (e ver se fiz certo rs...):

No Data Model, no campo logo após o Data Source, que é o Default Package, informei o nome da minha PCK (que contém os parâmetros na SPEC, como o mesmo nome declarado no Publisher:

Selecionar tudo

Oracle DB Default Package: PCK_UTIL
Após esse passo, automaticamente, quando se vai criar um Event Trigger, a package aparece na parte de "Available Functions" para que você possa utilizar.

Dessa forma, você pode utilizá-la, passando os parâmetros necessários (do lado direito, em "Event Trigger"), seguindo a premissa de que os parâmetros devem estar, obrigatoriamente, na SPEC da package.

Notas importantes:
  • Os parâmetros devem ter o mesmo nome, e, mesmo não sendo utilizados, devem estar na SPEC da package;
  • A lista dos objetos que irá aparecer, irá conter apenas Functions e, estas devem, obrigatoriamente, retornar um BOOLEAN;
Fica aí a dica de como procedi aqui e, estarei colocando mais informações no fórum, para avaliação de vocês.

Muito obrigado mais uma vez.

Grande abraço,

Trevis
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes