--DROP TABLE dbo.prueba
--CREATE TABLE dbo.Prueba ( campo1 int, campo2 int )

DECLARE @NombreTabla sysname
      , @NombreColumna sysname;
DECLARE @strSql nvarchar(4000);
SET @NombreTabla = 'base.dbo.Prueba' -- nombre completo de la tabla (con la 
base y schema
SET @NombreColumna = 'Campo2'       -- nombre de la columna dentro de la 
tabla

-- Evalua si existe la tabla
IF object_id( @NombreTabla ) IS NULL
BEGIN
 PRINT 'La tabla ' + @NombreTabla + ' no existe...'
 RETURN
END

-- Evalua si existe la columna
IF columnproperty( object_id( @NombreTabla ), @NombreColumna, 'AllowsNull') 
IS NULL
 PRINT 'La columna ' + @NombreColumna + ' no existe en la tabla ' + 
parsename( @NombreTabla, 1 )
ELSE
 -- La columna existe!!
 BEGIN
  PRINT 'La columna ' + @NombreColumna + ' existe en la tabla ' + parsename( 
@NombreTabla, 1 ) +
  '. Procedo a eliminar la columna....'
  
  SET @strSql = 'alter table ' + @NombreTabla + ' drop column ' + 
@NombreColumna
  EXEC master.dbo.sp_executesql @[EMAIL PROTECTED]
 
  -- Nota: también podés poner directamente el código.
  -- Descomentariar lo que sigue, y comentariar el "Exec" de arriba
  --alter table sbs.dbo.Prueba drop column Campo2
  
 END
--
-- That's all folks!

 


-----Original Message-----
From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
To: "Daniel Aisenberg" <[EMAIL PROTECTED]>
Date: Mon, 21 Jan 2008 09:44:01 -0300
Subject: [dbms] DROP Column


El drop column no borran los registros.
 
Con Sysobjects y syscolumns podes hacer una consulta para ver si existe la 
columna.
No se si para eso tambien podes usar Object_id  (nunca lo use con una 
columna) y ver si te da null.
 
El drop column te va a convenir ponerlo en un procedure aparte, llamado 
desde el primero, porque si no, al parsear el codigo, si la columna no 
existe te va a dar un error. Otra solucion es poner el "drop column" dentro 
de un string (varchar) y hacer un sqlexec o exec (sql dinamico), para evadir 
el error de parsing (si la columna no existiera).
 
Saludos
 
 
 
-----Mensaje original-----
De: dbms@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Claudia Almeda
Enviado el: Viernes, 18 de Enero de 2008 02:22 p.m.
Para: Daniel Aisenberg
Asunto: [dbms] DROP Column
 
Hola lista: 
 
Como estan? Feliz comienzo de año antes que nada.. y ahora si la pregunta--
 
Tengo una tabla USUARIOS la cual como se imaginaran ya contiene registros, 
el tema es que necesito eliminar una de las columnas de dicha tabla, pero 
tengo dudas con un tema..
Se me borran los registros?
en caso de no ser asi... Que manera tengo de validar la exitencia de dicha 
tabla y dicho campo en la base antes de hacer el alter table..???
 
desde muchisimas gracias..
Saludetes

-- 
Atte Almeda Claudia 
 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.19.6/1230 - Release Date: 17/01/2008 
04:59 p.m.

 

Responder a