Obtener las columnas llaves y las columnas normales

29/06/2006 - 16:36 por eduardo | Informe spam
Hola a todo el mundo
Necesito recuperar los nombres de las columnas de una tabla en dos cadenas:
* Una con las columnas que pertenecen a la llave
* Otra con las demás columnas
Las cadenas deberían estar separadas por una coma o un espacio
@Llaves = 'campoLlave1,campoLlave2'
@normales = 'normal1,normal2,normal3'

Ahora mismo, gracias a un post anterior, logré recuperar los nombres de
las columnas en dos tablas temporales pero no se como convertir el
resultado en las cadenas que espero. Además necesito saber si lo que
estoy haciendo es lo mejor o si existen otras formas.
De antemano gracias por las sugerencias.


create table #normales (cadNor nvarchar(50))
create table #llaves (cad nvarchar(50))

insert into #llaves
select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where table_name = 'tabla1'
go

insert into #normales
select COLUMN_NAME from INFORMATION_SCHEMA.columns where table_name =
'tabla1' AND COLUMN_NAME NOT IN (select * from #llaves)

select * from #normales
select * from #llaves

drop table #normales
drop table #llaves

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
29/06/2006 - 16:51 | Informe spam
Eduardo,

Para que quieres ponerlas en una cadena?

Si esa cadena va a ser usada por una aplicacion externa, entonces has la
concatenacion en la aplicacion y no en SQL Server.

Ve si este articulo te es de ayuda.

http://groups.google.com/group/micr...366dd9e73e


AMB

"eduardo" wrote:

Hola a todo el mundo
Necesito recuperar los nombres de las columnas de una tabla en dos cadenas:
* Una con las columnas que pertenecen a la llave
* Otra con las demás columnas
Las cadenas deberían estar separadas por una coma o un espacio
@Llaves = 'campoLlave1,campoLlave2'
@normales = 'normal1,normal2,normal3'

Ahora mismo, gracias a un post anterior, logré recuperar los nombres de
las columnas en dos tablas temporales pero no se como convertir el
resultado en las cadenas que espero. Además necesito saber si lo que
estoy haciendo es lo mejor o si existen otras formas.
De antemano gracias por las sugerencias.


create table #normales (cadNor nvarchar(50))
create table #llaves (cad nvarchar(50))

insert into #llaves
select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where table_name = 'tabla1'
go

insert into #normales
select COLUMN_NAME from INFORMATION_SCHEMA.columns where table_name =
'tabla1' AND COLUMN_NAME NOT IN (select * from #llaves)

select * from #normales
select * from #llaves

drop table #normales
drop table #llaves

Respuesta Responder a este mensaje
#2 eduardo
29/06/2006 - 17:00 | Informe spam
Gracias por la respuesta
lo pruebo y te aviso :-)

Jorge Gonzalez escribió:
Eduardo

probá este algoritmo que funciona con sysobjects y adecualo a tus tablas...

declare @s as varchar (8000)

set @s =''

select @s = @s + Name + ','
from sysobjects

print @s

saludos

Jorge González
Respuesta Responder a este mensaje
#3 Jorge Gonzalez
29/06/2006 - 17:52 | Informe spam
Eduardo

probá este algoritmo que funciona con sysobjects y adecualo a tus tablas...

declare @s as varchar (8000)

set @s =''

select @s = @s + Name + ','
from sysobjects

print @s

saludos

Jorge González
"eduardo" escribió en el mensaje
news:
Hola a todo el mundo
Necesito recuperar los nombres de las columnas de una tabla en dos
cadenas:
* Una con las columnas que pertenecen a la llave
* Otra con las demás columnas
Las cadenas deberían estar separadas por una coma o un espacio
@Llaves = 'campoLlave1,campoLlave2'
@normales = 'normal1,normal2,normal3'

Ahora mismo, gracias a un post anterior, logré recuperar los nombres de
las columnas en dos tablas temporales pero no se como convertir el
resultado en las cadenas que espero. Además necesito saber si lo que estoy
haciendo es lo mejor o si existen otras formas.
De antemano gracias por las sugerencias.


create table #normales (cadNor nvarchar(50))
create table #llaves (cad nvarchar(50))

insert into #llaves
select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where table_name = 'tabla1'
go

insert into #normales
select COLUMN_NAME from INFORMATION_SCHEMA.columns where table_name =
'tabla1' AND COLUMN_NAME NOT IN (select * from #llaves)

select * from #normales
select * from #llaves

drop table #normales
drop table #llaves
Respuesta Responder a este mensaje
#4 eduardo
29/06/2006 - 22:53 | Informe spam
Y así quedó todo...
declare @s as nvarchar (4000)
declare @c as nvarchar (4000)
set @c =''
set @s =''
select @s = @s + COLUMN_NAME + ','
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where table_name = 'tabla1'


select @c =@c + COLUMN_NAME + ','
from INFORMATION_SCHEMA.columns
where table_name = 'tabla1' AND
COLUMN_NAME NOT IN (SELECT COLUMN_NAME from
INFORMATION_SCHEMA.KEY_COLUMN_USAGE Where table_name = 'tabla1')

print @s + ' ' + @c
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida