Zu prüfen ob es die Spalte gibt oder nicht ist unproblematisch, da gibt es genug Möglichkeiten.
Das Problem ist, mit dem Ergebnis weiterzuarbeiten.
Mit einer Abfrage
SELECT col1, col2, col3, col4, col5 FROM myTable
ist die Ergebnisstruktur definiert und kann problemlos in einer anderen Funktion weiterverarbeitet werden.
Eine Abfrage
SELECT * FROM myTable
kann das gleiche Ergebnis liefern, muss aber nicht. Erst recht nicht, wenn Spalten gelöscht oder hinzugefügt werden. Sie geht immer, liefert aber ein undefiniertes Ergbnis.
Eine Funktion, die aber ein Array aus col1, col2, col3, col4, col5 erwartet funktioniert bei einem Array aus col1, col2, col4, col5 aber nicht mehr oder nicht mehr fehlerfrei.
Ich kann jetzt natürlich hergehen und solche "gefährlichen" Spalten und Tabellen aus den Abfragen raus zu lassen. Stattdessen frage ich die dann halt in einzelnen Schritten sprich Queries ab, was aber zu einer unnötigen Erhöhung der Anzahl der Abfragen und wohl auch zu unnötig übertragener Datenmenge führen würde. Das will ich ja eigentlich nicht.