Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USE [ForestManagement]
- GO
- /****** Object: StoredProcedure [dbo].[usp_GetMainStockAgeDataOnQuarter] Script Date: 02.12.2021 14:56:01 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- ======================================================================
- -- ОПИСАНИЕ.
- -- Возвращает возрастные характеристики для главной породы на квартале.
- -- ПАРАМЕТРЫ:
- -- @Quarter_OID - идентификатор квартала.
- -- @NormativeData_OID - код набора НСИ
- -- @CuttingAgeKey - ключ справочника установленных возрастов рубок.
- -- @ActualizationYear - год актуализации данных.
- -- РЕЗУЛЬТИРУЮЩАЯ ВЫБОРКА:
- -- CommonData_OID - идентификатор общей характеристики подвыдела.
- -- ReturnCode - код результата выполнения ХП dbo.sp_GetMainStockAgeData
- -- MainStock_OID - идентификатор главной породы
- -- AgeGroup_OID - код возрастной группы
- -- CuttingAge - нижний предел возраста рубки
- -- AgeClassDuration - продолжительность класса возраста
- -- AgeClass - класс возраста
- -- Age - возраст
- -- InCalc - признак средневозрастных насаждений, включенных в расчет
- -- IsExploitable - признак эксплуатируемости
- -- MinAge - минимальный возраст
- -- MaxAge - максимальный возраст
- -- ======================================================================
- ALTER PROCEDURE [dbo].[usp_GetMainStockAgeDataOnQuarter]
- @Quarter_OID int,
- @NormativeData_OID smallint,
- @CuttingAgeKey smallint,
- @ActualizationYear smallint
- AS
- BEGIN
- SET NOCOUNT ON;
- CREATE TABLE #t
- (
- CommonData_OID int NOT NULL,
- Stratum_OID int,
- ReturnCode int,
- MainStock_OID smallint,
- AgeGroup_OID smallint,
- CuttingAge smallint,
- AgeClassDuration smallint,
- AgeClass smallint,
- Age smallint,
- InCalc bit,
- IsExploitable bit,
- MinAge smallint,
- MaxAge smallint
- )
- DECLARE @return_value int,
- @MainStock_OID smallint,
- @CuttingAge smallint,
- @AgeClassDuration smallint,
- @AgeGroup_OID smallint,
- @Age smallint,
- @AgeClass smallint,
- @CommonData_OID int,
- @oid int,
- @InCalc bit,
- @IsExploitable bit,
- @Stratum_OID int,
- @MinAge smallint,
- @MaxAge smallint
- DECLARE my_cursor CURSOR FORWARD_ONLY FAST_FORWARD FOR
- SELECT a.OID FROM CommonData AS a INNER JOIN SubStratum AS b ON a.SubStratum_OID = b.OID INNER JOIN Stratum AS c ON b.Stratum_OID = c.OID
- WHERE c.Quarter_OID = @Quarter_OID AND a.ActualizationYear = @ActualizationYear
- OPEN my_cursor
- FETCH NEXT FROM my_cursor INTO @CommonData_OID
- WHILE @@FETCH_STATUS = 0
- BEGIN
- EXEC @return_value = [dbo].[usp_GetMainStockAgeData]
- @CuttingAgeKey = @CuttingAgeKey,
- @NormativeData_OID = @NormativeData_OID,
- @CommonData_OID = @CommonData_OID,
- @MainStock_OID = @MainStock_OID OUTPUT,
- @CuttingAge = @CuttingAge OUTPUT,
- @AgeClassDuration = @AgeClassDuration OUTPUT,
- @AgeGroup_OID = @AgeGroup_OID OUTPUT,
- @Age = @Age OUTPUT,
- @AgeClass = @AgeClass OUTPUT,
- @MinAge = @MinAge OUTPUT,
- @MaxAge = @MaxAge OUTPUT
- SET @InCalc = 0
- SET @IsExploitable = 0
- SELECT @Stratum_OID = b.Stratum_OID
- FROM CommonData AS a INNER JOIN SubStratum AS b ON a.SubStratum_OID = b.OID
- WHERE a.OID = @CommonData_OID
- IF (@AgeGroup_OID = 2)
- BEGIN
- SELECT @oid = oid FROM CalculationAgeClasses
- WHERE NormativeData_OID = @NormativeData_OID AND CuttingAge = @CuttingAge AND AgeClassDuration = @AgeClassDuration AND @Age >= MinAge AND @Age <= MaxAge
- IF (@@ROWCOUNT > 0)
- SET @InCalc = 1
- END
- EXEC dbo.usp_CheckExploitable
- @NormativeData_OID = @NormativeData_OID,
- @CommonData_OID = @CommonData_OID,
- @ExploitableFlag = @IsExploitable OUTPUT
- INSERT INTO #t (CommonData_OID, Stratum_OID, ReturnCode, MainStock_OID, AgeGroup_OID, CuttingAge, AgeClassDuration, AgeClass, Age, InCalc, IsExploitable, MinAge, MaxAge)
- VALUES (@CommonData_OID, @Stratum_OID, @return_value, @MainStock_OID, @AgeGroup_OID, @CuttingAge, @AgeClassDuration, @AgeClass, @Age, @InCalc, @IsExploitable, @MinAge, @MaxAge)
- FETCH NEXT FROM my_cursor INTO @CommonData_OID
- END -- WHILE
- CLOSE my_cursor
- DEALLOCATE my_cursor
- SELECT * FROM #t
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement