Si pero el concepto es el mismo, o sea: estas pensado en registros y ciclos
y lo que hay que romper como modelo de pensar es eso, las bases de datos son
conjuntos y todo lo que se pueda resolver asi es mucho mejor, sus planes son
mejores.

 

Usar un While vs un cursor puede que sea un poco mejor (eso dependera de lo
que hay q hacer y como usas el cursor, pero no veo en un while como recorres
registros de forma optima)

 

 

 

 

Maximiliano Damian Accotto

Microsoft MVP en SQLServer

SQL Total Consulting

Bogota 3631 P3B

1407 Buenos Aires-Argentina

Movil: (011)-15-5868-5599

Desde el exterior: (+54-911)-5868-5599

 <mailto:[EMAIL PROTECTED]>
[EMAIL PROTECTED]

 

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Mariano Dios
Enviado el: viernes, 08 de agosto de 2008 12:35 p.m.
Para: MAXI
Asunto: [dbadmin] Como hacer una iteracion

 

Los cursores son costosos a nivel performance. Se recomienda no usarlos,
intentar resolver la necesidad puntual por otro lado, por ejemplo a través
de un ciclo y la cláusula WHILE.
 
Si hablamos de un conjunto de datos pequeño, no hay problema, pero si
estamos hablando de procesar un lote grande de datos, probas de una manera,
después de la otra, y los tiempos de respuesta del motor varían de manera
considerable.
 
Mariano




  _____  


From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [dbadmin] Como hacer una iteracion
Date: Fri, 8 Aug 2008 11:59:10 -0300



Hola, y cual es la diferencia de hacer eso y usar cursores? Un while a la
larga es un proceso de cursores, estas pensando en registros y no en teoria
de conjuntos como son las bases de datos

 

 

Maximiliano Damian Accotto

Microsoft MVP en SQLServer

SQL Total Consulting

Bogota 3631 P3B

1407 Buenos Aires-Argentina

Movil: (011)-15-5868-5599

Desde el exterior: (+54-911)-5868-5599

[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> 

 

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Mariano Dios
Enviado el: viernes, 08 de agosto de 2008 11:02 a.m.
Para: MAXI
Asunto: [dbadmin] Como hacer una iteracion

 

Buen día,
 
la lógica de un cursor se puede reemplazar con la clausula While. 
Podrías insertar los datos a recorrer en una tabla temporal, con una clave
primaria autonumérica. Despues deberías contar las filas de la tabla
temporal, y hacer un cliclo hasta que proceses el conjunto de datos. Dentro
del ciclo, escribirías la funcionalidad que necesites.
 
Mariano



  _____  


From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [dbadmin] Como hacer una iteracion
Date: Fri, 8 Aug 2008 09:30:36 -0300

Hola mariano!, gracias por la respuesta, me olvide de comentar  que estoy
tratando de hacer la sentencia sin usar cursor alguno. Como última de última
opción, será usar  cursores.  Como “no veo” solución sin cursores, estoy
consultando en la lista.  Piensan que no es posible una salida a este
planteo sin recurrir a los cursores?, yo, no le encuentro la vuelta.

 

Aclaración, la tabla no tiene índice, mas que la pk

 

Desde ya muchas gracias!!

 

           Alejandra Blasco

     Departamento de Sistemas

         Naldo Lombardi S.A. 

        02362-422039(Int. 201)

[EMAIL PROTECTED] 

  _____  

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Jose Mariano
Alvarez
Enviado el: Jueves, 07 de Agosto de 2008 08:52 p.m.
Para: [EMAIL PROTECTED]
Asunto: [dbadmin] Como hacer una iteracion

 

Yo usaria un cursor del tipo FOR UPDATE.

Ojo con los indices.

.


-------------------------------- 
Atte.
Ing. Jose Mariano Alvarez
SQL Total Consulting

 



 

2008/8/7 Programacion Naldo Lombardi SA
<[EMAIL PROTECTED]>

Necesito hacer que el campo de la tabla t1 que originalmente tiene esos
valores termine con los valores 

de Salida 

la tabla t1, tiene un campo c1 (int), no PK, ni FK.
Ejemplo con algunos registros: 
C1
-------
110
110
110
120
120
130
140
140
140


Salida: 
C1
-------
111
112
113
121
122
131
141
142


Quiere decir que encontramos tres 110, entonces necesito iterar el ultimo
carcater del 110 de 1 a 3,agregando el 1 en el primer, el 2 en el segundo y
3 en el tercer registro. O sea, el primer registro 110 paso a ser 111,el
segundo registro 110 paso a ser 112 , el tercer registro 110 paso a ser 113.

Necesito hacer un script que me permita actualizar esos registros con esa
iteración

Espero me entiendan. Desde ya muchas gracias. 

 
 
           Alejandra Blasco
     Departamento de Sistemas
         Naldo Lombardi S.A. 
        02362-422039(Int. 201)
[EMAIL PROTECTED] 
 

 

No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.12/1597 - Release Date: 07/08/2008
05:54 a.m.

 

 

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.12/1599 - Release Date: 07/08/2008
08:49 p.m.


No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.12/1599 - Release Date: 07/08/2008
08:49 p.m.

  _____  

Entra en contacto con el atleta que hay en ti. Haz la prueba.
<http://yourinnerathlete.windowslive.com/?locale=es-ar&TXT_TAGLM_WLYIA_takeq
uiz_ar> 

 

  _____  

Descargá ya gratis y viví la experiencia Windows Live. Descubre
<http://www.descubrewindowslive.com/latam/index.html>  Windows Live

Responder a