Procedimiento almacenado

29/04/2004 - 00:55 por Natacha | Informe spam
Hola a todos

les pido el favor me aconsejen como realizar la siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

Mil gracias a todos

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
29/04/2004 - 01:44 | Informe spam
Hola, y porque no usar Bucles While? con algun If claro?

o digamos de otra forma, vos tenes 2 intervalos de fechas y luego te dan una
frecuencia, no sera que vos queres insertar tantos registros admita la
freciencia

Ej:

Hora:1 08:00:00

Hora2: 10:00:003

Frecuencia: 30

registros

08:00:00
08:30:00
09:00:00
09:30:00
10:00:00

esto queres?



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:
-

"Natacha" escribió en el mensaje
news:5c2801c42d73$e6ff8190$
Hola a todos

les pido el favor me aconsejen como realizar la siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

Mil gracias a todos



Respuesta Responder a este mensaje
#2 Natacha
29/04/2004 - 03:03 | Informe spam
Si exactamente eso es lo que necesito.

Lo que sucede es que a veces me dan frecuencias de 1
minuto en 2 horas y se me hace ineficiente insertar 1 a 1
los 120 registros.En otras ocasiones si me envian
frecuencias de 20 min por ejemplo.


Hola, y porque no usar Bucles While? con algun If claro?

o digamos de otra forma, vos tenes 2 intervalos de fechas


y luego te dan una
frecuencia, no sera que vos queres insertar tantos


registros admita la
freciencia

Ej:

Hora:1 08:00:00

Hora2: 10:00:003

Frecuencia: 30

registros

08:00:00
08:30:00
09:00:00
09:30:00
10:00:00

esto queres?



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...desarrolla


dor/default.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Natacha" escribió


en el mensaje
news:5c2801c42d73$e6ff8190$
Hola a todos

les pido el favor me aconsejen como realizar la




siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

Mil gracias a todos







.

Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
29/04/2004 - 03:39 | Informe spam
hola, pero con un While esta bien!! aca no estas haciendo cursores ni mucho
menos, si vos pones un While e insertas no estaria nada mal, es como que el
usuario lo haya hecho.

Lo que no te entiendo es porque decis que es ineficiente?

Gracias


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:
-

"Natacha" escribió en el mensaje
news:5c9001c42d85$d179d7a0$
Si exactamente eso es lo que necesito.

Lo que sucede es que a veces me dan frecuencias de 1
minuto en 2 horas y se me hace ineficiente insertar 1 a 1
los 120 registros.En otras ocasiones si me envian
frecuencias de 20 min por ejemplo.


Hola, y porque no usar Bucles While? con algun If claro?

o digamos de otra forma, vos tenes 2 intervalos de fechas


y luego te dan una
frecuencia, no sera que vos queres insertar tantos


registros admita la
freciencia

Ej:

Hora:1 08:00:00

Hora2: 10:00:003

Frecuencia: 30

registros

08:00:00
08:30:00
09:00:00
09:30:00
10:00:00

esto queres?



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...desarrolla


dor/default.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Natacha" escribió


en el mensaje
news:5c2801c42d73$e6ff8190$
Hola a todos

les pido el favor me aconsejen como realizar la




siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

Mil gracias a todos







.

Respuesta Responder a este mensaje
#4 ulises
29/04/2004 - 17:54 | Informe spam
Al igual que Maxi no le veo problema en agregarlo dentro
de un bucle, en todo caso si deseas hacerlo por bloques,
puedes probar con (asumiento que tienes una
tabla 'tablatiempo' con una sola columna 'fecha'):

create procedure insertafecha
(
@fechaini datetime,
@fechafin datetime,
@intervalo int
)
as
declare @auxinter int
insert into tablatiempo values ( @fechaini )
set @auxinter = @intervalo
while ( DATEADD(mi,@auxinter,@fechaini) <= @fechafin )
begin
insert into tablatiempo
select DATEADD(mi,@auxinter,fecha)from tablatiempo
where fecha <= DATEADD(mi,@auxinter * -1,@fechafin)
set @auxinter = @auxinter * 2
end
go
exec insertafecha '20040104 10:00', '20040104 12:00', 30

fecha
2004-01-04 10:00:00.000
2004-01-04 10:30:00.000
2004-01-04 11:00:00.000
2004-01-04 11:30:00.000
2004-01-04 12:00:00.000

(5 row(s) affected)

el procedimiento lo que hace es utilizar los registros ya
grabados en la tabla para volverlos a grabar aumentando el
intervalo de tiempo, en todo caso sería buen ejercicio
poder medir que es más eficiente.

Saludos,
Ulises

Si exactamente eso es lo que necesito.

Lo que sucede es que a veces me dan frecuencias de 1
minuto en 2 horas y se me hace ineficiente insertar 1 a 1
los 120 registros.En otras ocasiones si me envian
frecuencias de 20 min por ejemplo.


Hola, y porque no usar Bucles While? con algun If claro?

o digamos de otra forma, vos tenes 2 intervalos de




fechas
y luego te dan una
frecuencia, no sera que vos queres insertar tantos


registros admita la
freciencia

Ej:

Hora:1 08:00:00

Hora2: 10:00:003

Frecuencia: 30

registros

08:00:00
08:30:00
09:00:00
09:30:00
10:00:00

esto queres?



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.../desarroll




a
dor/default.asp





-
(maxi_accotto[arroba]speedy.com.ar)
MSN:





-

"Natacha" escribió


en el mensaje
news:5c2801c42d73$e6ff8190$
Hola a todos

les pido el favor me aconsejen como realizar la




siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o






con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

Mil gracias a todos







.



.

Respuesta Responder a este mensaje
#5 Javier Loria
02/05/2004 - 11:29 | Informe spam
Hola Natacha:
Un viejo truco de SQL es tener una Tabla Numeros con una unica columna
Numero y por supuesto llena con 0,1,2,3,4,5,6.
Si tienes una Tabla como esta el codigo SQL para Insertar las filas es
extremadamente simple, y extremadamente rapido, porque usa las habilidades
para manejo de conjuntos de datos de SQL y se olvida del Ciclo.
==CREATE PROC InsertaFechas(
@FechaInicio DATETIME
, @FechaFinal DATETIME
, @IntervaloMinutos INT
)
AS
INSERT Fechas(Fecha)
SELECT DATEADD(mi,Numero*@IntervaloMinutos, @FechaInicio)
FROM Numeros
WHERE Numero BETWEEN 0
AND DATEDIFF(mi,@FechaInicio,
DATEADD(mi,-1,@FechaFinal))/@IntervaloMinutos
GO

InsertaFechas '20040428 07:00', '20040428 08:00', 20
== Esto asume que la Tabla en cuestion se llama Fechas y la columna Fecha
Espero te sirva,


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.
Natacha escribio:
Hola a todos

les pido el favor me aconsejen como realizar la siguiente
labor, lo que sucede es que solo se me ocurre hacerla a
traves de un cursor recoriendo registro a registro o con
tabla temporales, no se si se puede masivamente.

Recibo como parametros en un procedimiento un rango de
fechas y una duracion minima y debo insertar tantos
registros en una tabla como sea posible segun los datos
que me dieron, por ejemplo

Parametro 1: Abril 28 de 2004 7:00 AM
Parametro 2: Abril 28 de 2004 8:00 AM
Parametro 3: 20 min

Debo insertar en la tabla 3 registros:
Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:20 AM
Abril 28 de 2004 7:40 AM

Si el parametro 3 fuera de 30 minutos debo insertar 2
registros:

Abril 28 de 2004 7:00 AM
Abril 28 de 2004 7:30 AM

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