--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: [email protected] [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.