sábado, 11 de julio de 2009

Recetario T-SQL

Este es un SP (procedimiento almacenado o stored procedure en el idioma de Shakespeare) no documentado por los BOL de SQL Server, pero que puede ser de gran utilidad a la hora de eliminar todos los datos de nuestras tablas, etc.

exec sp_MSforeachtable 'TRUNCATE TABLE ?'

Otra utilidad menos maligna es usar este SP para obtener todos los nombres de nuestras tablas, y por ejemplo almacenarlas en una tabla temporal para luego ... (lo dejo abierto a la imaginación de cada uno y la utilidad que quiera darle). Así nos evitamos los puñeteros cursores xDDD

exec sp_MSforeachtable 'SELECT "?" AS Tabla'

2 comentarios:

Unknown dijo...

No, creo que te equivocas. Si miras el procedimiento almacenado, verás que se trata de un cursor, por lo que no nos libramos del cursor:

...
"declare hCForEachTable cursor global for select"
...

Francisco Ruiz dijo...

Cierto que internamente declara un cursor. Con lo de adiós al puñetero cursor me estaba refiriendo a que no tendremos que codificarlo nosotros para conseguir hacer lo mismo que este procedimiento, con lo cual no reinventamos la rueda. Lo más gracioso de todo es que este sp está disponible desde SQL Server 6.5