--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.