Blz ? Primeira coisa vc ** TEM ** que checar se as suas aplicações possuem um
mecanismo para te avisar quando uma dada operação é feita : se seus aplicativos
são ERPs, isso é bem comum, por exemplo no Oracle EBS vc tem o coneito de
Business Events, no SAP vc tem os SAP Process Events É comum a aplicação já
ter uma provisão para disparar um programa/rotina teu quando um evento/situação
ocorrer
CASO nem todas (ou mesmo nenhuma) das aplicações , aí é o seguinte : ao que
entendi esses eventos de 'emitir uma nota fiscal' e não sei o que mais ** não
** podem ser identificados de outra forma que não seja monitorar as tabelas que
registram os dados referentes a tais processamentos, certo ?
Sendo isso, para Além das triggers (que são possíveis sim, e são facilmente
criadas num LOOP com SQL dinâmico ou via script sqlplus criando script de DDLs,
uma técnica comum pra DBAs), vc TEM sim várias opções mas do mesmo modo que as
triggers não seriam super-simples de escrever, do mesmo modo NENHUMA das outras
alternativas é super-simples, para nenhuma basta vc passar a lista das tabelas
e o nome da procedure que envia email/faz não-sei-o-que e ela já faria tudo -
se vc espera algo nesse sentido imho vai ficar decepcionado. TODAS elas
envolvem algum setup/programação de sua parte, em alguns casos LONGOS e
relativamente complexosE *** não garanto ** que todas funcionem no
capadinhoe restrito Standard Edition, veja lá...
As opções principais seriam :
a) simplesmente criar um JOB seu que dispara a cada X minutos uma procedure sua
que consulte se houve qualquer alteração nas tabelas que mantém os dados que vc
quer, se houve a rotina/procedure sua envia os emails;faz o que vc quer e
mantém uma tabela-histórico adequada para evitar re-envio... Provavelmente deve
ser um tanto longo/demorado escrever uma rotina que consulte as tabelas todas
que vc quer mas possível claro que é...
b) usa o conceito de DATA NOTIFICATION, ie, cria um programa que é AVISADO
quando uma determinada query (que Consulte as tabelas que guardam os dados dos
tais eventos como emitir nota ou outras coisas) tem seus resultados mudados :
http://psoug.org/reference/dbms_change_notification.html descrever um pouco o
conceito, e http://www.oracle.com/technetwork/testcontent/dcn-otn-085625.html
demonstra com um programinha feito em Java... Com isso eu imagino a(s)
query/queries fazendo COUNT das tabelas envolvidas, por exemplo, e quando esse
resultado mudou. enviar os SMSs/email/não sei que que vc quer...
Uma variação seia o RESULT CACHE,
https://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:1201993900346923339
fala um pouco sobre ele...
c) pelo que entendi do seu cenário STREAMS não seria exatamente o que vc quer
(STREAMS serve para replicação, tipo exemplificado em
http://wedostreams.blogspot.com.br/2009/01/oracle-streams-101.html, e nesse
tipo de uso não teria como vc indicar qualquer processamento além de replicar
os dados) - pelo que imagino vc pensava em criar é um QUEUE de mensagens pelo
Advanced Queue, tool essa que por trás usa o Streams para seus propósitos,
certo ? Isso é explicitado no manual 11gR2 referente, online em
https://docs.oracle.com/cd/E18283_01/server.112/e11013/aq_demo.htm#i1006841...
Eu creio que vc com ele pensa em usar as suas tabelas que registram os dados
de emissão de nf e as outras coisas mais como fonte das mensagens e o processo
de dequeue (que provavelmente ficaria rodando permanentemente em background ou
seria cionado por job em intervalos) além de remover as mensagens dos queues
(tipo
https://dba.stackexchange.com/questions/25161/what-are-the-real-life-cases-for-using-oracle-advanced-queuing)
além disso enviaria os emails/SMSs e outras coisas... Nunca usei assim mas
CREIO que em tese possível é, sim
d) uma alternativa de baixa tecnologia (que requer um pouco de pensamento fora
da caixa mas pode ser interessante) é vc estabelecer uma AUDITORIA para DMLs
nas tabelas em questão e aí OU ter uma trigger só nessa tabela de auditoria OU
ter um job que a cada x minutos dispara uma rotina que vc escreveu e consulta a
tabela de auditoria pra ver se houve DML nas tabelas que regstram os dados de
NF ou o que mais te interessa, se detectou alterações envia SMS/email/whatever
e) usar o CDC (Change Data capture) - vide
https://mdinh.wordpress.com/2010/11/20/my-change-data-capture-adventure-part1/para
um exemplo...
f) criar uma view materializada de REFRESH ON COMMIT que usa as tabelas todas
em questão e ter uma trigger na view materializada que faça o envio de
SMS/email/etc que vc quer
==> e algumas variações no tema, eventualmente mixando alguma(s) das técnicas
acima ou variações delas...
[]s
Chiappa