Hero

Función show tables para MS SQL Server

Marzo 29, 2013

enzo
Microsoft
SQL-Server

En algunas ocasiones en necesario tener un listado de las tablas en el schema de la base de datos ya sea para verificar el nombre de una tabla o para confirmar que existen todas las tablas que necesita nuestros sistema.

La función show_tables existe en MySQL pero no existe de forma nativa en MS SQL Server, sin embargo podemos crearla.

  1. Crear SQL para obtener las tablas del schema.

Select Table_name as "Table name"
From Information_schema.Tables
Where Table_type = 'BASE TABLE' and Objectproperty
(Object_id(Table_name), 'IsMsShipped') = 0
order by "Table name"

En esta consulta hacemos uso schema Information_schema y de la tabla Tables y verificando que el Object property no es IsMsShipped los objectos que tienen esta propiedad en TRUE son elementos que se crearon durante la instalación y los que nos interesa son tablas creadas por nosotros mismos.

  1. Crear función Show_Tables.

Ahora que tenemos el SQL que nos retorna las tablas del schema, podemos crear una función. Sin embargo debemos remover la instrucción order by porque no es soportada por funciones en linea.

La función quedaría como se muestra a continuación:

CREATE FUNCTION show_tables ()
RETURNS TABLE AS RETURN
(
 Select Table_name as "Table name"
 From Information_schema.Tables
 Where Table_type = 'BASE TABLE' and Objectproperty
 (Object_id(Table_name), 'IsMsShipped') = 0
) GO
  1. Utilizar la función show_tables.

Ahora podemos utilizar nuestra función en conjunto con otras tablas, porque el resultado es como un tabla normal o un view, como se puede apreciar a continuación.

select * from show_tables() order by "Table name"

Espero que haya sido de ayuda y que lo incluyan en su lista de función personalizadas predeterminadas de sus sistemas 😛

enzo

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.