SQL Server - Error en cursor

 
Vista:
Imágen de perfil de Hector

Error en cursor

Publicado por Hector (7 intervenciones) el 23/10/2008 16:49:09
Hola a todos , estoy haciendo un cursor que recupere todos los campos de una tabla, y que para cada campo actualize los registros que contienen '.' , cuando lo ejecuto me dice que no se efectuaron cambios en ninguna fila. El codigo es el siguiente.

DECLARE @CAMPO VARCHAR(255)

DECLARE ELIMINAR_PUNTOS CURSOR
FOR
SELECT COLUMN_NAME from information_schema.columns
INNER JOIN
information_schema.tables
ON
information_schema.tables.TABLE_NAME = information_schema.columns.TABLE_NAME
WHERE information_schema.tables.TABLE_NAME= 'CG_10';
OPEN ELIMINAR_PUNTOS
FETCH ELIMINAR_PUNTOS INTO @CAMPO
WHILE (@@FETCH_STATUS = 0)

BEGIN
PRINT @CAMPO
-- Supongo que aqui esta el error.
UPDATE CG_10 SET @CAMPO= NULL WHERE @CAMPO='.' ;

FETCH ELIMINAR_PUNTOS INTO @CAMPO
END
CLOSE ELIMINAR_PUNTOs
DEALLOCATE ELIMINAR_PUNTOS

El resultado es el siguiente:
P6016

(0 row(s) affected)
P6020

(0 row(s) affected)
P6030

(0 row(s) affected)
P6040

(0 row(s) affected)
P6050

(0 row(s) affected)
P6080

(0 row(s) affected)
P6080S1

(0 row(s) affected)
P6060

(0 row(s) affected)
P6060S1

(0 row(s) affected)
P6070

(0 row(s) affected)
P6090

(0 row(s) affected)
P6140

(0 row(s) affected)
P6150

(0 row(s) affected)
P6100

(0 row(s) affected)
P6110

(0 row(s) affected)
P6120

(0 row(s) affected)
P6125

(0 row(s) affected)
P6160

(0 row(s) affected)
P6170

(0 row(s) affected)
P6175

(0 row(s) affected)
P6180

(0 row(s) affected)
P6180S1

(0 row(s) affected)
P6180S2

(0 row(s) affected)
P6190

(0 row(s) affected)
P6190S1

(0 row(s) affected)
P6200

(0 row(s) affected)
P6200S1

(0 row(s) affected)
P6210

(0 row(s) affected)
P6210S1

(0 row(s) affected)
P6220

(0 row(s) affected)
RC1

(0 row(s) affected)
RC2

(0 row(s) affected)
RC3

(0 row(s) affected)
RC4

(0 row(s) affected)
RC5

(0 row(s) affected)
RC12

(0 row(s) affected)
RC13

(0 row(s) affected)
RC17

(0 row(s) affected)
RC18

(0 row(s) affected)
RC19

(0 row(s) affected)
RC20

(0 row(s) affected)
RC21

(0 row(s) affected)
RC22

(0 row(s) affected)
RC23

(0 row(s) affected)
ID

(0 row(s) affected)
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:Error en cursor

Publicado por pacopaz (131 intervenciones) el 23/10/2008 22:31:20
Buen intento para usar SQL Dinámico, el problema fue no saber como hacerlo bien.
Intenta cambiando la linea que si es el problema con esto:

exec ('UPDATE CG_10 SET ' + @CAMPO + '= NULL WHERE ' + @CAMPO + '=''.''' )

Espero que te sirva.

Saludos.
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:Error en cursor

Publicado por Isaias (3308 intervenciones) el 24/10/2008 05:13:10
Pacopaz

Hay algo que NO me checa, al parecer nuestro amigo, desea ELIMINAR los puntos, pero en los NOMBRES de los campos de una tabla y eso, solo se puede hacer mediante ALTER TABLE.

¿me equivoco?
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:Error en cursor

Publicado por pacopaz (131 intervenciones) el 24/10/2008 20:06:01
Isaias,
Eso pareciera, toda vez que hace referencia al esquema de la base de datos, pero según el texto con el que comenzó su mensaje, lo que quiere es quitar los puntos de los registros y dejarlos nulos.
La referencia la hace para obtener los nombres de los campos y así no tener que enlistarlos para hacerles el set = null cuando sólo encuentre un punto(.).
Apelando a eso, le corregí el comando para que efectivamente sólo hiciera eso.
O por lo menos, eso esperaría, por que sinceramente no lo probé.

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