Obtener el nombre de una columna en un script

16/08/2005 - 23:59 por ajpb | Informe spam
Ilustres,

Como podria obtener el nombre de una columna de una tabla, necesito hacer un
script para saber si en una tabla existe una determinada columna ( tengo el
nombre ) y si no existe hacer un ALTER TABLE para agregarla.

Gracias

Preguntas similare

Leer las respuestas

#1 Juan Ant.
17/08/2005 - 00:09 | Informe spam
Podrías probar algo así:

if not exists (
select SC.name
from sysobjects SO, syscolumns SC
where SO.id = SC.id
and SO.name = 'Tablita'
and SC.name = 'Campito')
ALTER TABLE Tablita ADD Campito SMALLINT NOT NULL

Saludos
Respuesta Responder a este mensaje
#2 Maxi
17/08/2005 - 01:09 | Informe spam
Hola, no creo que sea una buena idea tu ejemplo, por mas que funcione, Ms no
recomienda el uso de las tablas de sistema, ya que no garantiza su
compatibilidad en futuras versiones (hasta en la misma version y distinto
Service Pack)

Para estas cosas existen las vistas de sistema INFORMATION_SCHEMA

y el ejemplo seria


use northwind

if exists (select column_name from information_schema.columns where
table_name='customers' and
column_name='CustomerId')
begin
print 'existe columna'
end

else

begin
print 'no existe columna'
end

=

Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Juan Ant." escribió en el mensaje
news:
Podrías probar algo así:

if not exists (
select SC.name
from sysobjects SO, syscolumns SC
where SO.id = SC.id
and SO.name = 'Tablita'
and SC.name = 'Campito')
ALTER TABLE Tablita ADD Campito SMALLINT NOT NULL

Saludos
Respuesta Responder a este mensaje
#3 Alejandro Mesa
17/08/2005 - 03:46 | Informe spam
Maxi,

Un comentario. Pregunten tambien por el duenio de la tabla.

if exists (select column_name from information_schema.columns
where table_schema = 'dbo' and table_name='customers' and
column_name='CustomerId')
...


AMB

"Maxi" wrote:

Hola, no creo que sea una buena idea tu ejemplo, por mas que funcione, Ms no
recomienda el uso de las tablas de sistema, ya que no garantiza su
compatibilidad en futuras versiones (hasta en la misma version y distinto
Service Pack)

Para estas cosas existen las vistas de sistema INFORMATION_SCHEMA

y el ejemplo seria

>
use northwind

if exists (select column_name from information_schema.columns where
table_name='customers' and
column_name='CustomerId')
begin
print 'existe columna'
end

else

begin
print 'no existe columna'
end

=>

Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Juan Ant." escribió en el mensaje
news:
Podrías probar algo así:

if not exists (
select SC.name
from sysobjects SO, syscolumns SC
where SO.id = SC.id
and SO.name = 'Tablita'
and SC.name = 'Campito')
ALTER TABLE Tablita ADD Campito SMALLINT NOT NULL

Saludos



Respuesta Responder a este mensaje
#4 Maxi
17/08/2005 - 04:56 | Informe spam
sip!! es verdad :-)

Gracias!!


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alejandro Mesa" escribió en el
mensaje news:
Maxi,

Un comentario. Pregunten tambien por el duenio de la tabla.

if exists (select column_name from information_schema.columns
where table_schema = 'dbo' and table_name='customers' and
column_name='CustomerId')
...


AMB

"Maxi" wrote:

Hola, no creo que sea una buena idea tu ejemplo, por mas que funcione, Ms
no
recomienda el uso de las tablas de sistema, ya que no garantiza su
compatibilidad en futuras versiones (hasta en la misma version y distinto
Service Pack)

Para estas cosas existen las vistas de sistema INFORMATION_SCHEMA

y el ejemplo seria

>>
use northwind

if exists (select column_name from information_schema.columns where
table_name='customers' and
column_name='CustomerId')
begin
print 'existe columna'
end

else

begin
print 'no existe columna'
end

=>>

Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Juan Ant." escribió en el mensaje
news:
Podrías probar algo así:

if not exists (
select SC.name
from sysobjects SO, syscolumns SC
where SO.id = SC.id
and SO.name = 'Tablita'
and SC.name = 'Campito')
ALTER TABLE Tablita ADD Campito SMALLINT NOT NULL

Saludos



Respuesta Responder a este mensaje
#5 ajpb
17/08/2005 - 15:13 | Informe spam
Muchas gracias a todos, funciona perfect!

Regards

"Maxi" wrote:

sip!! es verdad :-)

Gracias!!


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alejandro Mesa" escribió en el
mensaje news:
> Maxi,
>
> Un comentario. Pregunten tambien por el duenio de la tabla.
>
> if exists (select column_name from information_schema.columns
> where table_schema = 'dbo' and table_name='customers' and
> column_name='CustomerId')
> ...
>
>
> AMB
>
> "Maxi" wrote:
>
>> Hola, no creo que sea una buena idea tu ejemplo, por mas que funcione, Ms
>> no
>> recomienda el uso de las tablas de sistema, ya que no garantiza su
>> compatibilidad en futuras versiones (hasta en la misma version y distinto
>> Service Pack)
>>
>> Para estas cosas existen las vistas de sistema INFORMATION_SCHEMA
>>
>> y el ejemplo seria
>>
>> > >>
>> use northwind
>>
>> if exists (select column_name from information_schema.columns where
>> table_name='customers' and
>> column_name='CustomerId')
>> begin
>> print 'existe columna'
>> end
>>
>> else
>>
>> begin
>> print 'no existe columna'
>> end
>>
>> => >>
>>
>> Maxi - Buenos Aires - Argentina
>> Desarrollador 3 Estrellas
>>
>> Msn_messager:
>> mail: Maxi.da[arroba]gmail.com
>>
>> "Juan Ant." escribió en el mensaje
>> news:
>> Podrías probar algo así:
>>
>> if not exists (
>> select SC.name
>> from sysobjects SO, syscolumns SC
>> where SO.id = SC.id
>> and SO.name = 'Tablita'
>> and SC.name = 'Campito')
>> ALTER TABLE Tablita ADD Campito SMALLINT NOT NULL
>>
>> Saludos
>>
>>
>>



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