Saltar al contenido

Tabla temporal en el servidor SQL que causa el error ‘Ya hay un objeto llamado’

Este dilema se puede solucionar de variadas maneras, pero te dejamos la que en nuestra opinión es la resolución más completa.

Solución:

Lo está soltando, luego lo crea y luego intenta crearlo nuevamente usando SELECT INTO. Cambiar a:

DROP TABLE #TMPGUARDIAN
CREATE TABLE #TMPGUARDIAN(
LAST_NAME NVARCHAR(30),
FRST_NAME NVARCHAR(30))  

INSERT INTO #TMPGUARDIAN 
SELECT LAST_NAME,FRST_NAME  
FROM TBL_PEOPLE

En MS SQL Server puede crear una tabla sin un CREATE TABLE declaración usando SELECT INTO

Por lo general, coloco estas líneas al comienzo de mi procedimiento almacenado y luego al final.

Es una verificación de “existe” para las tablas #temp.

IF OBJECT_ID('tempdb..#MyCoolTempTable') IS NOT NULL
begin
        drop table #MyCoolTempTable
end

Ejemplo completo:

CREATE PROCEDURE [dbo].[uspTempTableSuperSafeExample]
AS
BEGIN
    SET NOCOUNT ON;


    IF OBJECT_ID('tempdb..#MyCoolTempTable') IS NOT NULL
    BEGIN
            DROP TABLE #MyCoolTempTable
    END


    CREATE TABLE #MyCoolTempTable (
        MyCoolTempTableKey INT IDENTITY(1,1),
        MyValue VARCHAR(128)
    )  

    INSERT INTO #MyCoolTempTable (MyValue)
        SELECT LEFT(@@VERSION, 128)
        UNION ALL SELECT TOP 10 LEFT(name, 128) from sysobjects

    SELECT MyCoolTempTableKey, MyValue FROM #MyCoolTempTable


    IF OBJECT_ID('tempdb..#MyCoolTempTable') IS NOT NULL
    BEGIN
            DROP TABLE #MyCoolTempTable
    END


    SET NOCOUNT OFF;
END
GO

Debes modificar la consulta así

CREATE TABLE #TMPGUARDIAN(
LAST_NAME NVARCHAR(30),
FRST_NAME NVARCHAR(30))  

INSERT INTO #TMPGUARDIAN(FRST_NAME,LAST_NAME)
SELECT LAST_NAME,FRST_NAME  FROM TBL_PEOPLE

— Realice una última sesión para borrar todas las tablas temporales. siempre cae al final. En su caso, a veces, puede ocurrir un error si la tabla no existe, mientras intenta eliminarla.

DROP TABLE #TMPGUARDIAN

Evite usar insertar en
Porque si está utilizando insertar en el futuro, si desea modificar la tabla temporal agregando una nueva columna que se puede completar después de algún proceso (no junto con la inserción). En ese momento, debe volver a trabajar y diseñarlo de la misma manera.

Usar variable de tabla http://odetocode.com/articles/365.aspx

declare @userData TABLE(
 LAST_NAME NVARCHAR(30),
    FRST_NAME NVARCHAR(30)
)

Ventajas
No se necesitan instrucciones Drop, ya que esto será similar a las variables. El alcance finaliza inmediatamente después de la ejecución.

Aquí tienes las reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *