Eu sei que você está perguntando sobre o SQL Server, mas no mundo Oracle (no passado), as tabelas temporárias tinham um custo muito alto; portanto, os procedimentos e acionadores com base no cursor eram mais rápidos e mais baixos no "custo" para o servidor. No SQL Server, os cursores costumavam ter um custo muito maior do que as tabelas temporárias, portanto, escrever código baseado em cursor era desencorajado. Tenho certeza de que essas discrepâncias foram eliminadas na década passada.
Para lidar com essas situações, a maioria das pessoas tem uma regra geral para evitar colocar a lógica de negócios no banco de dados. Se você puder fazer isso sempre totalmente, não haverá motivo para lógica processual nem no T-SQL nem no PL / SQL. Os bancos de dados relacionais são ótimos na lógica baseada em conjuntos. A maioria das linguagens de programação modernas são ótimas em lógica processual. É melhor usar cada um para o que eles são bons.
Alguns gatilhos de auditoria com os quais trabalhei tinham regras bastante complicadas para o que precisava ser verificado e onde as coisas tinham que ser atualizadas / registradas. Alguns eram para manter os sistemas de relatórios sincronizados com os sistemas transacionais (não era minha escolha, mas eles queriam assim). Alguns eram para um sistema de formulários . Um formulário é uma lista de medicamentos e, para cada companhia de seguros, o que eles cobrirão / não cobrirão e, se prescrito, drug_X quais substituições são cobertas pelo seguro. Também era comum que diferentes apólices de grupo na mesma companhia de seguros pagassem por medicamentos diferentes.