Pregunta de Cursores

10/05/2004 - 17:33 por Jorge Eldis | Informe spam
Saludos a todos,

Necesito recorrer una tabla y por cada registro pasarle el parametro a un SP
para que realice un proceso determinado.

La pregunta es:

Como puedo recorrer una tabla sin usar Cursores ya que he leido y me han
explicado aqui en este Grupo que son muy lentos y con bajo desempeño?

Saludos Jorge Eldis

Preguntas similare

Leer las respuestas

#1 ulises
10/05/2004 - 17:48 | Informe spam
Sería bueno que expliques el problema en forma completa,
en todo caso ¿porque no procesar la tabla dentro del
procedimiento almacenado?, creo que sería lo más óptimo.

Saludos,
Ulises

Saludos a todos,

Necesito recorrer una tabla y por cada registro pasarle


el parametro a un SP
para que realice un proceso determinado.

La pregunta es:

Como puedo recorrer una tabla sin usar Cursores ya que he


leido y me han
explicado aqui en este Grupo que son muy lentos y con


bajo desempeño?

Saludos Jorge Eldis


.

Respuesta Responder a este mensaje
#2 Jorge Eldis
10/05/2004 - 20:19 | Informe spam
Hola Ulices como estas,

La cosa es la siguiente, tengo una tabla de tarifas y una tabla de registros
para tasar, teniendo encuenta el la duracion de una llamada ya que es un
registro telefonico, por lo cual, cada destino lleva una tarifa determinada,
lo que hago es,

Cojo la tabla de destinos y la meto en un Cursor, por cada registro taso la
tabla de llamadas en dependencia del destino multipicando la duracion con el
costo del destino.

Asi que tengo que recorrer una tabla (Destinos) para tasar la otra de
llamadas.

Lo que queria ver era si podia hacerlo sin el Cursor.

Saludos, Gracias


"ulises" wrote in message
news:aada01c436a6$45547350$
Sería bueno que expliques el problema en forma completa,
en todo caso ¿porque no procesar la tabla dentro del
procedimiento almacenado?, creo que sería lo más óptimo.

Saludos,
Ulises

Saludos a todos,

Necesito recorrer una tabla y por cada registro pasarle


el parametro a un SP
para que realice un proceso determinado.

La pregunta es:

Como puedo recorrer una tabla sin usar Cursores ya que he


leido y me han
explicado aqui en este Grupo que son muy lentos y con


bajo desempeño?

Saludos Jorge Eldis


.

Respuesta Responder a este mensaje
#3 ulises
10/05/2004 - 21:05 | Informe spam
No sé si te he entendido, pero si tengo, por ejemplo, dos
tablas una de tarifas por minuto y otra de llamadas por
minuto, se puede calcular el costo de la siguiente manera :

create table tarifas ( clave char(5), nombre char(20),
tarifa decimal(15,2) )
create table llamadas ( secuencia int, duracion int,
destino char(5), costo decimal(15,2) null )
go
insert into tarifas values ( 'DES01','DESTINO 1',1.50 )
insert into tarifas values ( 'DES02','DESTINO 2',10.50 )
insert into tarifas values ( 'DES03','DESTINO 3',7.50 )
insert into llamadas values ( 1, 10, 'DES01',NULL)
insert into llamadas values ( 2, 10, 'DES01',NULL)
insert into llamadas values ( 3, 10, 'DES02',NULL)
insert into llamadas values ( 4, 10, 'DES03',NULL)
go
update llamadas set costo = duracion * tarifa
from tarifas join llamadas on clave = destino
go
select * from llamadas

secuencia duracion destino costo
1 10 DES01 15.00
2 10 DES01 15.00
3 10 DES02 105.00
4 10 DES03 75.00

(4 row(s) affected)

Saludos,
Ulises

Hola Ulices como estas,

La cosa es la siguiente, tengo una tabla de tarifas y una


tabla de registros
para tasar, teniendo encuenta el la duracion de una


llamada ya que es un
registro telefonico, por lo cual, cada destino lleva una


tarifa determinada,
lo que hago es,

Cojo la tabla de destinos y la meto en un Cursor, por


cada registro taso la
tabla de llamadas en dependencia del destino multipicando


la duracion con el
costo del destino.

Asi que tengo que recorrer una tabla (Destinos) para


tasar la otra de
llamadas.

Lo que queria ver era si podia hacerlo sin el Cursor.

Saludos, Gracias
Respuesta Responder a este mensaje
#4 Jorge Eldis
11/05/2004 - 19:37 | Informe spam
Hola como estas Ulises.

Ante todo muchas gracias por toda la ayuda y tu tiempo

Mira entendistes perfecto lo que por lo que me explicaste lo que hay otros
detalles,

1- Los Numeros de destinos son solo partes Ej.

Si llamas a USA seria 001305XXXXXXX, por lo que un codigo de destino seria
001305, asi que tengo que buscar el la tabla del llamadas todos los que
empiecen con 001305, sea con LIKE o con LEFT, en realidad no se cual es
mejor para usar ambo me dan la misma respuesta.

2- Como pueden haber numeros de destinos con semejantes numeros tengo que
ordenarlos en orden descendente Ej.

001305 y puedo tener 001, como ves 001 se repite en ambos.

Como me sugieres que haga para no usar el Cursor?

Saludos y muchas gracias por tu ayuda.



"ulises" wrote in message
news:af9701c436c1$c2de8ed0$
No sé si te he entendido, pero si tengo, por ejemplo, dos
tablas una de tarifas por minuto y otra de llamadas por
minuto, se puede calcular el costo de la siguiente manera :

create table tarifas ( clave char(5), nombre char(20),
tarifa decimal(15,2) )
create table llamadas ( secuencia int, duracion int,
destino char(5), costo decimal(15,2) null )
go
insert into tarifas values ( 'DES01','DESTINO 1',1.50 )
insert into tarifas values ( 'DES02','DESTINO 2',10.50 )
insert into tarifas values ( 'DES03','DESTINO 3',7.50 )
insert into llamadas values ( 1, 10, 'DES01',NULL)
insert into llamadas values ( 2, 10, 'DES01',NULL)
insert into llamadas values ( 3, 10, 'DES02',NULL)
insert into llamadas values ( 4, 10, 'DES03',NULL)
go
update llamadas set costo = duracion * tarifa
from tarifas join llamadas on clave = destino
go
select * from llamadas

secuencia duracion destino costo
1 10 DES01 15.00
2 10 DES01 15.00
3 10 DES02 105.00
4 10 DES03 75.00

(4 row(s) affected)

Saludos,
Ulises

Hola Ulices como estas,

La cosa es la siguiente, tengo una tabla de tarifas y una


tabla de registros
para tasar, teniendo encuenta el la duracion de una


llamada ya que es un
registro telefonico, por lo cual, cada destino lleva una


tarifa determinada,
lo que hago es,

Cojo la tabla de destinos y la meto en un Cursor, por


cada registro taso la
tabla de llamadas en dependencia del destino multipicando


la duracion con el
costo del destino.

Asi que tengo que recorrer una tabla (Destinos) para


tasar la otra de
llamadas.

Lo que queria ver era si podia hacerlo sin el Cursor.

Saludos, Gracias
Respuesta Responder a este mensaje
#5 ulises
11/05/2004 - 21:39 | Informe spam
Lo que no tengo muy claro es si la clave de busqueda de
los destinos es de un tamaño fijo o variable, en todo caso
enviame la estructura de tus tablas y algunos datos de
ejemplo para poder ayudarte mejor.

Saludos,
Ulises

Hola como estas Ulises.

Ante todo muchas gracias por toda la ayuda y tu tiempo

Mira entendistes perfecto lo que por lo que me explicaste


lo que hay otros
detalles,

1- Los Numeros de destinos son solo partes Ej.

Si llamas a USA seria 001305XXXXXXX, por lo que un codigo


de destino seria
001305, asi que tengo que buscar el la tabla del llamadas


todos los que
empiecen con 001305, sea con LIKE o con LEFT, en


realidad no se cual es
mejor para usar ambo me dan la misma respuesta.

2- Como pueden haber numeros de destinos con semejantes


numeros tengo que
ordenarlos en orden descendente Ej.

001305 y puedo tener 001, como ves 001 se repite en ambos.

Como me sugieres que haga para no usar el Cursor?

Saludos y muchas gracias por tu ayuda.



"ulises" wrote in message
news:af9701c436c1$c2de8ed0$
No sé si te he entendido, pero si tengo, por ejemplo, dos
tablas una de tarifas por minuto y otra de llamadas por
minuto, se puede calcular el costo de la siguiente


manera :

create table tarifas ( clave char(5), nombre char(20),
tarifa decimal(15,2) )
create table llamadas ( secuencia int, duracion int,
destino char(5), costo decimal(15,2) null )
go
insert into tarifas values ( 'DES01','DESTINO 1',1.50 )
insert into tarifas values ( 'DES02','DESTINO 2',10.50 )
insert into tarifas values ( 'DES03','DESTINO 3',7.50 )
insert into llamadas values ( 1, 10, 'DES01',NULL)
insert into llamadas values ( 2, 10, 'DES01',NULL)
insert into llamadas values ( 3, 10, 'DES02',NULL)
insert into llamadas values ( 4, 10, 'DES03',NULL)
go
update llamadas set costo = duracion * tarifa
from tarifas join llamadas on clave = destino
go
select * from llamadas

secuencia duracion destino costo
1 10 DES01 15.00
2 10 DES01 15.00
3 10 DES02 105.00
4 10 DES03 75.00

(4 row(s) affected)

Saludos,
Ulises

Hola Ulices como estas,

La cosa es la siguiente, tengo una tabla de tarifas y una


tabla de registros
para tasar, teniendo encuenta el la duracion de una


llamada ya que es un
registro telefonico, por lo cual, cada destino lleva una


tarifa determinada,
lo que hago es,

Cojo la tabla de destinos y la meto en un Cursor, por


cada registro taso la
tabla de llamadas en dependencia del destino multipicando


la duracion con el
costo del destino.

Asi que tengo que recorrer una tabla (Destinos) para


tasar la otra de
llamadas.

Lo que queria ver era si podia hacerlo sin el Cursor.

Saludos, Gracias




.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida