+++ Ciclos +++

21/02/2004 - 07:47 por Roberto Carlos Núñez | Informe spam
Hola, buen día!
Necesito corregir unos campos en una base de datos, los registros no son
continuos, pero cumplen con cierto criterio mediante la clásual SELECT.

Se me ocurre o creo que se podria utilizar un ciclo FOR o WHILE pero no sé
exactamente la sintaxis.

¿Alguien tiene algún ejemplo o explicación al respecto?


Gracias de antemano!

Preguntas similare

Leer las respuestas

#1 Javier Loria
21/02/2004 - 11:56 | Informe spam
Hola Roberto:
La sintaxis del WHILE es:
= WHILE (Condicion)
BEGIN
Codigo del Ciclo
END
= No existe un FOR en SQL. Ahora me parece que lo que quieres operar es
una condicion que se vaya aplicando fila por fila del SELECT, en este caso
NO te sirve el WHILE, lo que buscas en un CURSOR. La sintaxis del cursor es:
ÞCLARE NombreCursor CURSOR FOR *** Aqui el SELECT ***
OPEN NombreCursor
FETCH NEXT FROM NombreCursor
INTO (*** Aqui las Variables ***)
WHILE @@FETCH_STATUS = 0
BEGIN
*** Aqui Acciones ***
FETCH NEXT FROM NombreCursor
INTO (*** Aqui las Variables ***)
END
= Ahora en realidad muy rara vez queremos hacer alguna de estas sentencias
en SQL, y la razon es que SQL no es un lenguaje procedimental como Visual
Basic, C++, Java, etc, y preferimos usar operaciones que trabajan sobre el
conjunto de datos. Probablemente lo que quieres hacer tiene una sintaxis
como:
=UPDATE Tabla
SET Columna1ÊSE WHEN (Condicion1) THEN Valor1
WHEN (Condicion2) THEN Valor2
ELSE Valor3 END,
SET Columna2ÊSE WHEN (Condicion4) THEN Valor4
WHEN (Condicion5) THEN Valor5
ELSE Valor6 END
WHERE (Condicion 7)
= Este tipo de codigo es "mas SQL", y normalmente es cientos de veces mas
rapido que los primeros, claro es dificil de escribir porque exige un cambio
de mentalidad respecto a la programacion tradicional.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Roberto Carlos Núñez escribio:
Hola, buen día!
Necesito corregir unos campos en una base de datos, los registros no
son continuos, pero cumplen con cierto criterio mediante la clásual
SELECT.

Se me ocurre o creo que se podria utilizar un ciclo FOR o WHILE pero
no sé exactamente la sintaxis.

¿Alguien tiene algún ejemplo o explicación al respecto?


Gracias de antemano!
Respuesta Responder a este mensaje
#2 Maximiliano Damian Accotto
21/02/2004 - 14:06 | Informe spam
Hola, creo que deberias tener muy encuenta lo de Javier, si queres corregir
Datos que cumplen con una condicion no necesitas en lo absoluto ir fila a
fila (como lo haces o lo hacias en VB,c,etc)

Las Bases de Datos relacionales estan pensadas y optimizadas para trabajar
con conjuntos de datos.

Quizas si nos envias bien lo que necesitas hacer te podamos dar una solucion
con instrucciones Sql y veras lo optimo que es.

Para que te hagas una idea, en esta semana he estado migrando toda una
aplicacion de Cashflow que funcionaba FILA a FILA (una version un poco vieja
en Access), el tiempo de respuesta en este caso eran de 2 a 3HS
aproximadamente, la migre completamente con Stores que trabajan con
funciones Sql y paso a tardar 5 minutos, sorprendente verdad.


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Roberto Carlos Núñez" escribió en el mensaje
news:O0ZNZXE%
Hola, buen día!
Necesito corregir unos campos en una base de datos, los registros no son
continuos, pero cumplen con cierto criterio mediante la clásual SELECT.

Se me ocurre o creo que se podria utilizar un ciclo FOR o WHILE pero no sé
exactamente la sintaxis.

¿Alguien tiene algún ejemplo o explicación al respecto?


Gracias de antemano!



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