Mi experiencia ha sido que son mucho más eficientes y veloces que los desarrollos del lado del cliente, el asunto es que si realmente tu BD es usada por muchos usuarios, estamos hablando de miles a millones, se pone muy lento en caso de no tener una distribución eficiente de la información, pero para llegar a esos número tendrías que estar trabajando con una empresa de mediano a gran tamaño. Te envío un ejemplo de un SP o procedimiento almacenado (PA) que me devuelve un cursor para luego poder trabajar con esa información, al no usar comandos de VFP sino invocar la consulta (select) del lado del servidor la curva de respuesta es muy alta!
USE [EMPRESAXXX]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Erwin Vera
-- Create date: 01-08-2013
-- Description: SP que arma cursor con los movimiento de asistencia
-- =============================================
IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='PA_asistencias')
DROP PROCEDURE PA_asistencias;
GO
CREATE PROCEDURE [dbo].[PA_asistencias]
@cCodTra as varchar(10),
@fDesde as datetime,
@fHasta as datetime
AS
BEGIN
declare @fVacia as datetime
set @fVacia = ''
SELECT CODTRA,DESDE,HASTA,TIPO,REMUNERADO,CANTIDAD,FECHANOM,cestaticket
FROM REMHISREP
WHERE CODTRA=@cCODTRA AND ((FECHANOM>=@fDesde AND FECHANOM<=@fHasta)
OR (((DESDE>=@fDesde AND DESDE<=@fHasta)
OR (HASTA>=@fDesde AND HASTA<=@fHasta)
OR (DESDE<=@fDesde AND HASTA>=@fHasta)) AND FECHANOM=@fVacia ))
END
GO
Este otro SP hace una actualización de sueldos planificados en una tabla de trabajadores de manera que se puedan realizar los cambios a través de algún planificador, sea de BD o de cualquier lenguaje de programación con posibilidades de invocar comandos de la BD :
USE [EMPRESAXXX]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Erwin Vera
-- Create date: 19-09-2012
-- Description: Ejecuta los cambios de sueldos registrados en el histórico de sueldo HISSUELDO
-- =============================================
CREATE PROCEDURE [dbo].[PA_SUELDOAUTO]
AS
BEGIN
SET NOCOUNT ON;
--- cambio de sueldo automático del maestro de trabajadores de acuerdo a
--- lo planificado o indicado en el histórico de sueldos
---
DECLARE @LAFECHA AS DATETIME
SELECT @LAFECHA = GETDATE() --'05-09-2009' --
SELECT a.codtra,a.apellido,.a.nombre,a.fecha_ing,a.sueldo,
isnull((SELECT TOP 1 SUELDO FROM HISSUELDO WHERE CODTRA=A.CODTRA and FECHA <= @LAFECHA ORDER BY FECHA DESC),0) AS NEWSUELDO,
isnull((SELECT TOP 1 FECHA FROM HISSUELDO WHERE CODTRA=A.CODTRA and FECHA <=@LAFECHA ORDER BY FECHA DESC),0) AS fecha,
isnull((SELECT TOP 1 FECHA FROM HISSUELDO WHERE CODTRA=A.CODTRA ORDER BY FECHA DESC),0) AS ULTfecha
INTO #TEMPORAL
FROM REMCTATRA A
WHERE CODTRA IN (SELECT TOP 1 CODTRA FROM HISSUELDO WHERE CODTRA=A.CODTRA AND FECHA <= @LAFECHA ORDER BY FECHA DESC);
-- Actualizando según resultado del temporal
UPDATE REMCTATRA SET SUELDO = (SELECT NEWSUELDO FROM #TEMPORAL WHERE CODTRA=REMCTATRA.CODTRA AND SUELDO<>NEWSUELDO )
WHERE CODTRA IN (SELECT CODTRA FROM #TEMPORAL WHERE SUELDO<>NEWSUELDO );
SELECT * FROM HISSUELDO A WHERE A.CODTRA IN (SELECT CODTRA FROM #TEMPORAL WHERE CODTRA=A.CODTRA AND SUELDO<>NEWSUELDO) ORDER BY CODTRA,FECHA DESC
DROP TABLE #TEMPORAL
END
GO
--
Has recibido este mensaje porque estás suscrito al grupo "PHP Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/phplatinoamerica.
--
Has recibido este mensaje porque estás suscrito al grupo "PHP Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/phplatinoamerica.
--