57 lines
3.1 KiB
Transact-SQL
57 lines
3.1 KiB
Transact-SQL
|
|
/****** Object: StoredProcedure [dbo].[stp_StatoProd_getByMacchina] Script Date: 04/05/2018 12:15:09 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
/*************************************
|
|
* STORED PROCEDURE stp_TC_getDtLastPzByMacchinaQta
|
|
* recupera il record da TempiCicloRilevati per la macchina indicata lasciando il num di pz richiesto
|
|
*
|
|
* modif.: S.E.L.
|
|
* il: 2018.05.04
|
|
**************************************/
|
|
create PROCEDURE [dbo].[stp_TC_getDtLastPzByMacchinaQta]
|
|
(
|
|
@idxMacchina NVARCHAR(50)
|
|
,@DataOra DATETIME = NULL
|
|
,@NumPz2Left INT = 0 -- indica il numero di pezzi da lasciare...
|
|
)
|
|
AS
|
|
SET XACT_ABORT ON;
|
|
BEGIN TRAN
|
|
|
|
-- in primis: se dataora > adesso rimetto adesso
|
|
SET @DataOra = CASE WHEN ISNULL(@DataOra,GETDATE()) >= GETDATE() THEN GETDATE() ELSE @DataOra END
|
|
|
|
-- imposto valori accessori
|
|
DECLARE @IdxODL INT = 0
|
|
DECLARE @DataInizioOdl DATETIME
|
|
|
|
-- recupero da tab ODL il codice odl stesso e l'articolo data macchina e data/ora...
|
|
SELECT @IdxODL = ISNULL(IdxODL,0), @DataInizioOdl = DataInizio
|
|
FROM ODL
|
|
WHERE IdxMacchina = @IdxMacchina
|
|
AND DataInizio <= @DataOra
|
|
AND ISNULL(DataFine, GETDATE()) >= @DataOra
|
|
|
|
;WITH cteLastPz AS
|
|
(
|
|
-- recupero i dati dei pezzi prodotti alla data richiesta
|
|
SELECT TOP(@NumPz2Left + 1) *
|
|
FROM dbo.TempiCicloRilevati
|
|
WHERE IdxMacchina = @idxMacchina
|
|
AND DataOraRif BETWEEN @DataInizioOdl AND @DataOra
|
|
ORDER BY DataOraRif DESC
|
|
)
|
|
|
|
SELECT TOP 1 *
|
|
FROM cteLastPz
|
|
ORDER BY DataOraRif
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|