SQL Server - Validar existencia de tabla

 
Vista:
sin imagen de perfil

Validar existencia de tabla

Publicado por Alberto (3 intervenciones) el 21/03/2018 03:00:56
Que tal, estoy intentando realizar una consulta, en la que intento validar la existencia de una tabla,

De existir paso el contenido de esa tabla a un a tabla temporal
De no existir creo esa misma tabla vacia copiando la la estructura de otra tabla

este es mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IF OBJECT_ID('CUENTAS10') IS NOT NULL
	BEGIN
		DROP TABLE #CUENTAS10
		SELECT *
		INTO #CUENTAS10
		FROM CUENTAS10
	END
 
	ELSE
	BEGIN
		DROP TABLE #CUENTAS10
		select Top 0 *
		into #CUENTAS10
		From  CUENTAS18
	END

me lanza el siguiente error:

Ya hay un objeto con el nombre '#CUENTAS10' en la base de datos.

si valido la existencia de la tabla #cuentas10 no existe
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Validar existencia de tabla

Publicado por Isaias (4558 intervenciones) el 21/03/2018 17:18:18
¿Porque en ambas instrucciones hace un DROP TABLE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Validar existencia de tabla

Publicado por Alberto (3 intervenciones) el 22/03/2018 02:28:33
Que tal, en ambas situaciones necesito eliminar la tabla si esque existiera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 122
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Validar existencia de tabla

Publicado por Plutarco (46 intervenciones) el 22/03/2018 01:51:15
Hola Alberto

Todas las tablas temporales se crean en tempdb, esto es que mientras estés en tu sesión de sql sever va a existir

Salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Validar existencia de tabla

Publicado por Alberto (3 intervenciones) el 22/03/2018 02:45:02
Que tal si, es muy cierto, ya que la solución que tuve fue crear las tablas en la base para ejecutar mi consulta y después eliminar dichas tablas, desconozco si esto es viable, pero momentáneamente me ayudo a continuar con mi código.

Ahora el problema es que tengo 2 tablas:

select*
from #SALDOS
select*
from #CUENTAS

Ambas consultas me dan como resultado tablas con el mismo numero de fila (2007 filas), ya que tienen un campo en común con la misma cantidad de filas con exactamente los mismos datos, pero al realizar una consulta select join me arroja 2317 fila siendo que deberían ser 2007,

esta es mi consulta:

select distinct LEFT(#CUENTAS.NUM_CTA,10) AS CUENTA, #CUENTAS.STATUS, #CUENTAS.TIPO,RIGHT(#CUENTAS.NIVEL,1) AS NIVEL, #CUENTAS.NOMBRE, #SALDOS.EJERCICIO,round ((#SALDOS.INICIAL),2) as INICIAL, ROUND ((#SALDOS.CARGO01),2) as CARGO, ROUND ((#SALDOS.ABONO01),2) AS ABONO,round ((#SALDOS.CARGO01 - #SALDOS.ABONO01),2) as SALDO_FINAL
from #CUENTAS join #SALDOS on #CUENTAS.NUM_CTA = #SALDOS.NUM_CTA
order by #SALDOS.EJERCICIO

Al revisar mi tabla resultante de la consulta, el valor del campo #CUENTAS.NUM_CTA puede repetirse dependiendo del numero de años disponibles #SALDOS.EJERCICIO,

es decir si la base contiene datos de los años 2014, 2015 y 2016, una cuenta se repite 3 veces, una por año, pero si una cuenta cambio de nombre en un año, entonces me repite esa cuenta 2 veces en ese año, siendo que es el mismo numero cuenta pero con nombre distinto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 122
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Validar existencia de tabla

Publicado por Plutarco (46 intervenciones) el 22/03/2018 16:07:45
Hola

El que tus tablas tengan el mismo numero de registros no significa que en una consulta vayas a obntener un número de filas fijo, todo depende de la relación entre tus tablas, el número de cuenta es tu llave principal en tu tabla de #cuentas o al menos así debería de ser, pero al parecer si una de tus cuentas cambia de nombre probablemente estés creando otra cuenta nueva y por eso se repite, aunque tu relación sea de 1 muchos es importante ver la descripción de tu tabla de cuentas

Salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar existencia de tabla

Publicado por William Brito (4 intervenciones) el 31/05/2018 22:30:53
no paso de la primera sentencia. OBJECT_ID toma dos parametros. El parametro faltante deberia tener valor 'U'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 122
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Validar existencia de tabla

Publicado por Plutarco (46 intervenciones) el 01/06/2018 15:22:14
Hola, basicamente hay dos maneras de saber si una tabla temporal existe, te pongo un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
´creamos la tabla
CREATE TABLE #Paso
(id INT)
 
--ahora checamos si existe
IF OBJECT_ID('tempdb..#Paso') IS NOT NULL
    select  'si existe la tabla'
Else
    select  'no existe la tabla'
 
--La otra forma es usando el parámetro opcional no documentado
IF OBJECT_ID('tempdb..#Paso', 'u') IS NOT NULL
    select  'si existe la tabla'
Else
    select  'no existe la tabla'


Espero haberme explicado correctamente

Salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar