"localhost:/firebird/data/ILICHEVSK2.FDB". Процедуры Previous topic Chapter index Next topic

QUALITY_SAMPER_TO_LAB

 

Входные параметры

Параметр

Тип

Описание

CROPID

INTEGER

 

HUMIDITYVALUE

NUMERIC(2,2)

 

DIRTVALUE

NUMERIC(2,2)

 

 

Выходные параметры

Параметр

Тип

Описание

HUMIDITYID

INTEGER

 

DIRTID

INTEGER

 

 

Описание

!!!(переделать) Преобразование парметров в числовые (сухое сырое и чистое .. сорное)

 

Определение

CREATE PROCEDURE QUALITY_SAMPER_TO_LAB(
    CROPID INTEGER,
    HUMIDITYVALUE NUMERIC(2,2),
    DIRTVALUE NUMERIC(2,2))
RETURNS (
    HUMIDITYID INTEGER,
    DIRTID INTEGER)
AS
begin
-- влажность
  select
  case
-- кукуруза, пшеница, рожь, третикале, ячмень
    WHEN :CROPID in (4, 1, 3, 71, 2) THEN
      CASE
        WHEN :HUMIDITYVALUE <= 14 THEN 0
        WHEN (:HUMIDITYVALUE <= 15.5) THEN 1
        WHEN (:HUMIDITYVALUE <= 17.0) THEN 2
        WHEN :HUMIDITYVALUE > 17.0 THEN 3
      END
-- овес
    WHEN :CROPID in (48) THEN
      CASE
        WHEN :HUMIDITYVALUE <= 13.5 THEN 0
        WHEN (:HUMIDITYVALUE <= 15.5) THEN 1
        WHEN (:HUMIDITYVALUE <= 17.0) THEN 2
        WHEN :HUMIDITYVALUE > 17.0 THEN 3
      END
-- подсолнечник
    WHEN :CROPID in (48) THEN
      CASE
        WHEN :HUMIDITYVALUE <= 7.0 THEN 0
        WHEN (:HUMIDITYVALUE <= 8.0) THEN 1
        WHEN (:HUMIDITYVALUE <= 9.0) THEN 2
        WHEN :HUMIDITYVALUE > 9.0 THEN 3
      END
  end
  from RDB$DATABASE
  INTO :HumidityID;

-- сорная
  select
  case
    WHEN :CROPID in (4, 48, 1) THEN
-- кукуруза, овесб пшеница
      CASE
        WHEN :DIRTVALUE <= 1.0 THEN 0
        WHEN (:DIRTVALUE <= 3.0) THEN 1
        WHEN :DIRTVALUE > 3.0 THEN 2
      END
-- рожь, третикале
    WHEN :CROPID in (3, 71) THEN
      CASE
        WHEN :DIRTVALUE <= 1.0 THEN 0
        WHEN (:DIRTVALUE <= 2.0) THEN 1
        WHEN :DIRTVALUE > 2.0 THEN 2
      END
--ячмень
    WHEN :CROPID in (2) THEN
      CASE
        WHEN :DIRTVALUE <= 2.0 THEN 0
        WHEN (:DIRTVALUE <= 4.0) THEN 1
        WHEN :DIRTVALUE > 4.0 THEN 2
      END
-- подсолнечник
    WHEN :CROPID in (37) THEN
      CASE
        WHEN :DIRTVALUE <= 1.0 THEN 0
        WHEN (:DIRTVALUE <= 5.0) THEN 1
        WHEN :DIRTVALUE > 5.0 THEN 2
      END
  end
  from RDB$DATABASE
  INTO :DirtID;
  suspend;
end

 

     Previous topic Chapter index Next topic