Wie heißt es immer so schön:
Works as designed.

Wenn ich eine SQL-UDF/Procedure entwickle, so sollte ich andere Proceduren, die selber wiederum SQL-Funktionen darstellen auch per SQL und nicht per CALL aufrufen.

Wird eine Prozedur geändert, so dass sie nun SQL verwendet oder plötzlich SQL-Daten verändert was sie vorher nicht getan hat, so ist das ein Designfehler.
Solche Änderungen bedürfen eigentlich neuer SQL-Funktionen, so dass dies dann kein Problem wäre.

Das ist zugegegben natürlich schwer zu überwachen. Der Einfachheit halber kann man natürlich den allgemeine Weg für alle Prozeduren gehen.

Wenn aber eine Prozedur als READS SQL DATA definiert ist, so darf sie nicht später in MODIFIES SQL DATA geändert werden da dieses ein Designbruch ist und eben genau zu diesen Problemen führt.
Dies gilt natürlich auch für andere Arten von Änderungen.