Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
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
         
         
         
       |