Hacer nullables columnas

18/06/2009 - 16:49 por Nahuel Garcia | Informe spam
Buenas tardes:

Es posible hacer nullable todas las columnas de una tabla con una sql?

Gracias

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
18/06/2009 - 16:54 | Informe spam
ALTER <tuTabla> ALTER COLUMN <tuCampo> <TipoDatosTuCampo> NULL

Así, para cada una de las columnas de tu tabla

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"Nahuel Garcia" escribió en el mensaje
news:
Buenas tardes:

Es posible hacer nullable todas las columnas de una tabla con una sql?

Gracias
Respuesta Responder a este mensaje
#2 Nahuel Garcia
18/06/2009 - 20:32 | Informe spam
Gracias por tu respuesta. Pienso poner en nullable todas las columnas de una
tabla. Como no conozco que columnas tiene la tabla hago esto:

USE mercadoDemoGenInformes
GO

DECLARE @data_type char, @column_name char, @character_maximum_length int,
@numeric_precision int, @numeric_scale int

DECLARE recordset CURSOR FOR
SELECT DATA_TYPE, COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION,
NUMERIC_SCALE
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = 'ARTICULO' and IS_NULLABLE = 'No'

OPEN recordset

FETCH NEXT FROM recordset
INTO @data_type, @column_name, @character_maximum_length,
@numeric_precision, @numeric_scale

WHILE @@FETCH_STATUS = 0
BEGIN
IF @data_type = 'varchar'
ALTER TABLE [mercadoDemoGenInformes] ALTER COLUMN [@column_name]
@data_type(@character_maximum_length) null GO
ELSE
ALTER TABLE [mercadoDemoGenInformes] ALTER COLUMN [@column_name]
@data_type(@numeric_precision,@numeric_scale) null
GO

BEGIN
FETCH NEXT FROM recordset
INTO @data_type, @column_name, @character_maximum_length,
@numeric_precision, @numeric_scale
END
END
CLOSE recordset
DEALLOCATE recordset
GO

Pero obtengo los siguientes errores.

Msg 170, Level 15, State 1, Line 17
Línea 17: sintaxis incorrecta cerca de '@data_type'.
Msg 156, Level 15, State 1, Line 1
Sintaxis incorrecta cerca de la palabra clave 'ELSE'.
Msg 170, Level 15, State 1, Line 2
Línea 2: sintaxis incorrecta cerca de '@data_type'.
Msg 137, Level 15, State 1, Line 4
Debe declarar la variable '@data_type'.

Me pueden ayudar. Gracias


"Carlos Sacristan" escribió en el mensaje de
noticias:
ALTER <tuTabla> ALTER COLUMN <tuCampo> <TipoDatosTuCampo> NULL

Así, para cada una de las columnas de tu tabla

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"Nahuel Garcia" escribió en el mensaje
news:
Buenas tardes:

Es posible hacer nullable todas las columnas de una tabla con una sql?

Gracias




Respuesta Responder a este mensaje
#3 Carlos Sacristan
19/06/2009 - 08:34 | Informe spam
Tienes que usar SQL dinámico para poder ejecutar la instrucción ALTER TABLE.
Es decir, algo como...

SET @sSql = 'ALTER TABLE ' + @nomTabla + ' ALTER COLUMN ' + @nomColumn + ' '
+ [@column_name] + ' ' + @data_type + ' (' + @character_maximum_length+ ')
null '



Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"Nahuel Garcia" escribió en el mensaje
news:
Gracias por tu respuesta. Pienso poner en nullable todas las columnas de
una tabla. Como no conozco que columnas tiene la tabla hago esto:

USE mercadoDemoGenInformes
GO

DECLARE @data_type char, @column_name char, @character_maximum_length int,
@numeric_precision int, @numeric_scale int

DECLARE recordset CURSOR FOR
SELECT DATA_TYPE, COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_SCALE
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = 'ARTICULO' and IS_NULLABLE = 'No'

OPEN recordset

FETCH NEXT FROM recordset
INTO @data_type, @column_name, @character_maximum_length,
@numeric_precision, @numeric_scale

WHILE @@FETCH_STATUS = 0
BEGIN
IF @data_type = 'varchar' ALTER TABLE [mercadoDemoGenInformes] ALTER
COLUMN [@column_name] @data_type(@character_maximum_length) null GO
ELSE
ALTER TABLE [mercadoDemoGenInformes] ALTER COLUMN [@column_name]
@data_type(@numeric_precision,@numeric_scale) null
GO

BEGIN
FETCH NEXT FROM recordset
INTO @data_type, @column_name, @character_maximum_length,
@numeric_precision, @numeric_scale
END
END
CLOSE recordset
DEALLOCATE recordset
GO

Pero obtengo los siguientes errores.

Msg 170, Level 15, State 1, Line 17
Línea 17: sintaxis incorrecta cerca de '@data_type'.
Msg 156, Level 15, State 1, Line 1
Sintaxis incorrecta cerca de la palabra clave 'ELSE'.
Msg 170, Level 15, State 1, Line 2
Línea 2: sintaxis incorrecta cerca de '@data_type'.
Msg 137, Level 15, State 1, Line 4
Debe declarar la variable '@data_type'.

Me pueden ayudar. Gracias


"Carlos Sacristan" escribió en el mensaje de
noticias:
ALTER <tuTabla> ALTER COLUMN <tuCampo> <TipoDatosTuCampo> NULL

Así, para cada una de las columnas de tu tabla

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"Nahuel Garcia" escribió en el mensaje
news:
Buenas tardes:

Es posible hacer nullable todas las columnas de una tabla con una sql?

Gracias




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida