a6d7ea0b2f
versione TK 2.4 inclusione schema voc x tabella lingue e vocabolario
52 lines
1.6 KiB
Transact-SQL
52 lines
1.6 KiB
Transact-SQL
|
|
/***************************************
|
|
* STORED stp_getParticolareOutputOk
|
|
*
|
|
* Ritorna se il particolare IN ( UDC in Ingresso ) sia presente nella distinta del
|
|
* particolare OUT ( UDC in Uscita / creazione )
|
|
*
|
|
* Steamware, G.A.R.
|
|
* mod: 2014.02.12
|
|
*
|
|
* EXECUTE dbo.stp_ParticolareInOutOk '1LVT00380000', '1GRZ00370000' , TRUE
|
|
* EXECUTE dbo.stp_ParticolareInOutOk '1LVT00380000', '1LVT00380000' , FALSE
|
|
*
|
|
****************************************/
|
|
CREATE PROCEDURE dbo.stp_ParticolareInOutOk
|
|
(
|
|
@ParticolareOUT AS NVARCHAR(50) = '',
|
|
@ParticolareIN AS NVARCHAR(50) = '',
|
|
@FlgPartSame AS BIT = 1 -- se true due particolari uguali è OK
|
|
)
|
|
AS
|
|
BEGIN
|
|
|
|
SET NOCOUNT ON;
|
|
DECLARE @Return AS INT;
|
|
|
|
-- se il particolare in ingresso è uguale
|
|
IF @ParticolareOUT = @ParticolareIN AND @FlgPartSame = 1
|
|
BEGIN SELECT 1 AS Trovati;
|
|
RETURN; -- esco
|
|
END
|
|
|
|
-- Cte ricorsiva che a fronte del particolare passati mi ritorna tutto l'albero della distinta
|
|
;WITH DistintaCTE ( Particolare , Padre, Figlio, Level ) AS
|
|
(
|
|
SELECT @ParticolareOUT, d.Padre, d.Figlio, 0 AS Level
|
|
FROM RilPro.DistintaAS400 AS d
|
|
WHERE d.Padre = @ParticolareOUT
|
|
UNION ALL
|
|
SELECT Particolare, p.Padre, p.Figlio, Level + 1 -- select ricorsiva
|
|
FROM RilPro.DistintaAS400 AS p
|
|
INNER JOIN DistintaCTE AS f ON p.Padre = f.Figlio
|
|
)
|
|
--SELECT Particolare, * FROM DistintaCTE
|
|
SELECT @Return = COUNT(*) FROM DistintaCTE
|
|
WHERE Figlio = @ParticolareIN
|
|
OPTION (MAXRECURSION 1000); -- max n. sottolivelli
|
|
|
|
SELECT @Return AS Trovati;
|
|
|
|
END
|