El SQL que escribe el SQL

¿Cómo hago lo mismo en todas las tablas sin escribirlo cincuenta veces?

Cuaderno N°12 · Serie «Trucos de T-SQL para tu DW»

Lectura ~13 min · SQL Server · Metaprogramación · Data Warehouse

La pregunta aparece apenas un data warehouse pasa de un puñado de tablas. El reflejo es copiar y pegar el mismo patrón (el hash de cambios, el JOIN de carga, un conteo de auditoría) tabla por tabla, y rezar para acordarse de actualizar las cincuenta cuando el esquema cambia. No pasa: alguien agrega una columna, se olvida de un script, y el bug vive callado meses.

La salida es generar SQL dinámicamente desde el catálogo —leer INFORMATION_SCHEMA y dejar que el SQL escriba el SQL—, el patrón que en la industria llaman metadata-driven SQL. Este cuaderno muestra cómo, con STRING_AGG y sp_executesql, generar SQL para todas las tablas desde su metadata, y las trampas que separan un generador seguro de un agujero de inyección.

Qué vas a encontrar:

  • El problema: escribirlo a mano N veces y mantenerlo sincronizado.
  • El truco: lee el catálogo, genera el SQL.
  • El segundo generador: el JOIN desde la llave real.
  • Por qué QUOTENAME, siempre (la defensa contra inyección).
  • Por qué el orden importa y STRING_AGG no lo garantiza solo.
  • Lo que el catálogo no te dice (los límites del enfoque).
  • Qué cambia si estás en Microsoft Fabric.