SQL - select @variable

 
Vista:

select @variable

Publicado por JAMP (3 intervenciones) el 20/04/2005 18:06:49
Como puede verse en las siguientes líneas, tengo un cursor que se
recorre la tabla de sistema syscolumns, devolviendo el nombre de los
campos de una determinada tabla. El nombre del campo se captura
en la variable @NCAMPO, pero al utilizarla en la instrucción select que hay a continuación, en vez de devolverme el contenido del campo, lo que devuelve es el nombre del campo.
¿Tiene esto solución?

FETCH NEXT FROM KURSOR INTO @NCAMPO
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SEGUNDO = (SELECT @NCAMPO FROM INSERTED WHERE CODCLI=@NCODCLI)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:select @variable

Publicado por Isaías Islas (5072 intervenciones) el 20/04/2005 18:57:01
Preferiria que me dijeras que QUIERES HACER y no como lo estas haciendo, una regla en SQL Server es NO METERSE con las tablas del sistemas.

Espero tu comentario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:select @variable

Publicado por jamp (3 intervenciones) el 21/04/2005 09:58:53
Es muy sencillo lo que quiero hacer. Me valgo de las tablas de systema, y concretamente de la tabla SYSCOLUMNS, para conocer el nombre de los campos de cualquier tabla y poder operar con ellos. En este caso concreto, pretendo crear a traves de TRIGGERS un sistema de auditoria para cualquier tabla de usuario, de manera que cuando se produzca una actualización, reflejar determinados datos en una tabla que llamo AUDITORIA, sin necesidad de tener que introducir el nombre de los campos de la tabla a la que está asociado el TRIGGER.
Por tanto, con un cursor me recorro syscolumns para el ID correspondiente a la tabla en sysobjects, con ese nombre de campo recogido en syscolumns pretendo extraer el contenido de dicho campo tanto en la tabla de usuario como de la tabla inserted, de manera que si sin diferentes se ha producido un cambio y lo reflejaré en la tabla AUDITORIA. Tambien lo podría hacer con IF UPDATE(CAMPO), pero me encuentro con el mismo problema, cuando sustituyo CAMPO por @VAR, que contiene el nombre de campo recogido de syscolumns, me sigue dando un error, y me resisto a creer que no se pueda realizar esta operación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:select @variable

Publicado por Isaías Islas (5072 intervenciones) el 21/04/2005 18:11:22
Pues, perdona que te lo diga, pero estas haciendo cosas, que incluso, Microsoft, NO RECOMIENDA.

¿Como saber los nombres de las columnas, tablas, indices, etc.?

Existe una VISTA de sistema creada para tal fin, ver este ejemplo:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'RANGO_EDAD'

SELECT T.TABLE_NAME AS [Table], C.COLUMN_NAME AS [Column],
C.IS_NULLABLE AS [Allows Nulls?], C.DATA_TYPE AS [Type]
FROM INFORMATION_SCHEMA.Tables T JOIN INFORMATION_SCHEMA.Columns C
ON T.TABLE_NAME = C.TABLE_NAME
WHERE T.TABLE_NAME NOT LIKE 'sys%'
AND T.TABLE_NAME <> 'dtproperties'
AND T.TABLE_SCHEMA <> 'INFORMATION_SCHEMA'
ORDER BY T.TABLE_NAME, C.ORDINAL_POSITION
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Continua....

Publicado por Isaías Islas (5072 intervenciones) el 21/04/2005 18:16:02
Ahora, hablando de AUDITORIA, SQL Server cumple con C2 AUDIT LEVEL, por tanto, puedes establecer TRAZAS para hacer auditoria.

"No quiero crear trazas, porque me han dicho que degradan la respuesta de SQL" (Que es una mentira).

Entonces sigue esta ligas:

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art168.asp

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art73.asp

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar