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

Mostrar la cita
el parametro a un SP
Mostrar la cita
leido y me han
Mostrar la cita
bajo desempeño?
Mostrar la cita
#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

Mostrar la cita
el parametro a un SP
Mostrar la cita
leido y me han
Mostrar la cita
bajo desempeño?
Mostrar la cita
#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

Mostrar la cita
tabla de registros
Mostrar la cita
llamada ya que es un
Mostrar la cita
tarifa determinada,
Mostrar la cita
cada registro taso la
Mostrar la cita
la duracion con el
Mostrar la cita
tasar la otra de
Mostrar la cita
#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

Mostrar la cita
tabla de registros
Mostrar la cita
llamada ya que es un
Mostrar la cita
tarifa determinada,
Mostrar la cita
cada registro taso la
Mostrar la cita
la duracion con el
Mostrar la cita
tasar la otra de
Mostrar la cita
#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

Mostrar la cita
lo que hay otros
Mostrar la cita
de destino seria
Mostrar la cita
todos los que
Mostrar la cita
realidad no se cual es
Mostrar la cita
numeros tengo que
Mostrar la cita
manera :
Mostrar la cita
Ads by Google
Search Busqueda sugerida