--****************************
--CURSORES********************
--****************************
--1.- MEDIANTE CURSORES DETERMINAR LA COMANDA QUE TIENE MAS PRODUCTOS
ALTER PROCEDURE SPC1
AS
BEGIN
DECLARE @CONT_MAX INTEGER
DECLARE @RES INTEGER
DECLARE @IDC INTEGER
DECLARE @CONT INTEGER
SET @CONT_MAX=-1
DECLARE CUR1 CURSOR
FOR
SELECT ID_COMANDA, COUNT(ID_COMANDA) AS CANTIDAD
FROM LINEA_PEDIDO
GROUP BY ID_COMANDA
OPEN CUR1
FETCH CUR1 INTO @IDC,@CONT
WHILE(@@FETCH_STATUS =0)
BEGIN
IF (@CONT>@CONT_MAX)
BEGIN
SET @CONT_MAX=@CONT
SET @RES= @IDC
END
FETCH CUR1 INTO @IDC, @CONT
END
IF @RES!= NULL BEGIN
PRINT 'LA COMANDA COM MAS PRODUCTOS ES : '
PRINT CAST (@RES AS VARCHAR)
END
ELSE
BEGIN
PRINT 'NO EXISTEN COMANDAS'
END
CLOSE CUR1
DEALLOCATE CUR1
END
EXEC SPC1
--2.- MEDIANTE CURSORES DETERMINAR EN CUANTOS CONTRATOS PARTICIPO EL CLIENTE
--DE NOMBRE X
ALTER PROCEDURE SPC2 @XNOMBRE AS VARCHAR(255)
AS
BEGIN
DECLARE @IDCLIENTE INTEGER
DECLARE @ID_AUX INTEGER
DECLARE @CONT INTEGER
SET @CONT=0
SET @IDCLIENTE =DBO.OBT_ID(@XNOMBRE)
DECLARE CUR2 CURSOR
FOR
SELECT ID_CLIENTE FROM CONTRATOS
OPEN CUR2
FETCH CUR2 INTO @ID_AUX
WHILE (@@FETCH_STATUS =0)
BEGIN
IF (@ID_AUX=@IDCLIENTE)
SET @CONT=@CONT+1
FETCH CUR2 INTO @ID_AUX
END
PRINT 'CONTRATOS REALIZADOS: '+CAST (@CONT AS VARCHAR)
CLOSE CUR2
DEALLOCATE CUR2
END
EXEC SPC2 'JUAN pEREZ'
CREATE FUNCTION OBT_ID (@NOMBRE VARCHAR(255))
RETURNS INTEGER
BEGIN
DECLARE @ID INTEGER
SET @ID= (SELECT ID_CLIENTE FROM CLIENTES
WHERE NOMBRE = @NOMBRE)
RETURN @ID
END
lunes, 26 de septiembre de 2011
[INF-272] PROYECTO : Cursores
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario