Tο ότι παίζει ο κώδικας δεν σημαίνει ότι είναι και σωστός. Μία λάθος τεχνική μπορεί να δημιουργήσει προβλήματα σε όσους την ακολουθούν. Ειδικά όταν διδάσκει κανείς πρέπει να προσέχει πολύ τί παραδείγματα χρησιμοποιεί. Οι μαθητές παρανοούν πολύ συχνά αυτά που λες και μπορεί να θεωρήσουν ένα όχι και τόσο πετυχημένο παράδειγμα ως τον σωστό τρόπο δουλειάς. Είσαι σίγουρος ότι οι μαθητές σου, βλέποντας ένα τέτοιο παράδειγμα, δεν θα το θεωρήσουν ως άδεια να σκαλίζουν τους system πίνακες ανεξέλεγκτα? Δεν θα ήταν προτιμότερο να τους δείξεις ένα πιο σωστό παράδεγιμα?
Κατά κανόνα οι εφαρμογές δεν χρειάζεται να χρησιμοποιήσουν τους system πίνακες. Οι administrators τους χρειάζονται αλλά οι προγραμματιστές σπανίως τους χρειάζονται, εκτός και αν δημιουργούν system scripts, deployment scripts ή κάτι άλλο άσχετο με την εφαρμογή την ίδια. Ίσα-ίσα, η εξάρτηση μίας εφαρμογής από τους system πίνακες είναι ένδειξη ότι κάτι μπορεί να πηγαίνει στραβά.
Επιπλέον, οι system πίνακες μπορούν και αλλάζουν από έκδοση σε έκδοση. Στον SQL Server 2000 υπήρχε ο πίνακας sysobjects, αλλά τώρα υπάρχει ο sys.objects και η χρήση του sysobjects δεν προτείνεται πλέον. Δεν αποκλείεται στο μέλλον να εξαφανιστεί ο sysobjects ή να αλλάξει συμπεριφορά. Το script που ανέφερες παίζει μόνο σε SQL Server 2005, όχι σε SQL Server 2000. Είναι καλύτερο να χρησιμοποιεί κανείς τα INFORMATION_SCHEMA views, τα οποία είναι κομμάτι του SQL standard. Αυτό σημαίνει ότι θα τα βρει κανείς και σε άλλες βάσεις, όχι μόνο στον SQL Server.
Κάποιος μάλιστα απάντησε στο blog post που ανέφερες με ένα query το οποίο χρησιμοποιεί το view INFORMATION_SCHEMA.ROUTINES:
select specific_name,specific_schema
from information_schema.routines
where routine_type=’function’
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos