Ich weiß, dass Sie nach SQL Server fragen, aber in der Oracle-Welt (in der Vergangenheit) waren temporäre Tabellen sehr teuer, sodass cursorbasierte Prozeduren und Trigger für den Server schneller und kostengünstiger waren. In SQL Server waren Cursor früher weitaus teurer als temporäre Tabellen, daher wurde davon abgeraten, cursorbasierten Code zu schreiben. Ich bin mir ziemlich sicher, dass diese Diskrepanzen im letzten Jahrzehnt beseitigt wurden.
Um mit diesen Situationen fertig zu werden, haben die meisten Menschen eine allgemeine Regel, um zu vermeiden, dass Geschäftslogik in die Datenbank aufgenommen wird. Wenn Sie das absolut immer tun können, gibt es weder in T-SQL noch in PL / SQL einen Grund für prozedurale Logik. Relationale Datenbanken eignen sich hervorragend für satzbasierte Logik. Die meisten modernen Programmiersprachen beherrschen die prozedurale Logik hervorragend. Es ist am besten, jeden für das zu verwenden, was er kann.
Einige Auditing-Trigger, mit denen ich gearbeitet habe, hatten ziemlich komplizierte Regeln dafür, was überprüft werden musste und wo Dinge aktualisiert / protokolliert werden mussten. Einige waren dafür gedacht, Berichtssysteme mit Transaktionssystemen synchron zu halten (es war nicht meine Wahl, aber sie wollten es so). Einige waren für ein Formelsystem . Eine Formel ist eine Liste von Arzneimitteln, und für jede Versicherungsgesellschaft, was sie abdecken / nicht abdecken und, falls verschrieben, drug_X, welche Ersatzprodukte durch die Versicherung abgedeckt sind. Es war auch üblich, dass verschiedene Gruppenpolicen bei derselben Versicherungsgesellschaft für verschiedene Medikamente bezahlten.