PROGRAMACION DE BDD SQL SERVER

Iniciado por geoch08, 19 Marzo 2014, 04:03 AM

0 Miembros y 1 Visitante están viendo este tema.

geoch08

BUENAS NOCHES,
NO SE SI ME PUEDEN AYUDAR CON UNA CONSULTA.

NECESITO ACTUALIZAR  UNOS DATOS MASIVAMENTE A TRAVEZ DE UNA CONSULTA
POR EJEMPLO TENGO UN TABLA EQUIPOS QUE TIENE LOS CAMPOS ID, NOMBRE , SERIE, UBICACION.

1 UIOMATRP-CAJA01 MXL111001 QUITO
2 UIOMATRP-CAJA02 MXL111002 QUITO
3 UIOMATRP-CAJA03 MXL111003 QUITO
4 UIOMATRP-CAJA04 MXL111004 QUITO
5 UIOMATRP-CAJA05 MXL111005 QUITO

QUERY SERIA
update equipos
set
nombre =uiomatri-bode0 (y que vaya en secuencia ejemplo uiomatri-bode01,02,03)
from equipo (select * from equipos where serie in ('MXL111001 ',MXL111002 ,MXL111003'))

es decir esos equipo con serie tendria que cambiar denombre automaticamente a
uiomatri-bode01
uiomatri-bode02
uiomatri-bode03

es algo asi como identity en el primari key al momento de crear la un campo de la tabla pero no se como hacer si me ayudan me ahorrarian un monto de trabajo

Shell Root

Puedes hacer un store procedure junto con un cursor, así recorres una tabla registro por registro y realiza las operaciones correspondientes por cada registro.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

geoch08

Amigo si me das una idea por favor de como realizar yo después me arreglo de como realizar

Shell Root

#3
Mira, los cursores son una especie de ciclo donde se recorre desde el primer registro hasta el último, en otras palabras en programación sería algo al estilo:

Código (php) [Seleccionar]
for($i=0; $i<$CantidadRegistros; $i++):
   # Aquí el código para cada registro
endfor;


Ahora para SQL Server, sería:
Código (sql) [Seleccionar]

DECLARE @id INT
DECLARE @nombre VARCHAR(20)
DECLARE @nombreNuevo VARCHAR(20)
DECLARE crsCursor CURSOR FOR (SELECT id, nombre FROM tabla)

SET @contador = 1
OPEN crsCursor
   FETCH NEXT FROM crsCursor INTO @id, @nombre
   WHILE @@FETCH_STATUS = 0 BEGIN
      SET @nombreNuevo = 'UIOMATRI-BODE' + RIGHT(@nombre, 2)
      -- #
      UPDATE table SET nombre = @nombreNuevo WHERE id = @id
      -- #
      FETCH NEXT FROM crsCursor INTO @id, @nombre
   END
CLOSE crsCursor
DEALLOCATE crsCursor




UPDATE
Ahora pensadolo bien, podría ser algo como:
Código (sql) [Seleccionar]
UPDATE tabla SET nombre = 'UIOMATRI-BODE' + RIGHT(nombre, 2)

jajaja si que me gusta hacer las cosas dificiles :3
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.