fn_tr_temp_input_params.sql 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. create or replace function fn_tr_temp_input_params()
  2. returns trigger as
  3. $$
  4. declare
  5. var_check_result public.check_result_type;
  6. var_input_params public.input_params_type;
  7. var_response public.calc_result_response_type;
  8. var_calc_result public.calc_result_type[];
  9. begin
  10. -- Проверяем параметры
  11. var_check_result := fn_check_input_params(
  12. NEW.height,
  13. NEW.temperature,
  14. NEW.pressure,
  15. NEW.wind_direction,
  16. NEW.wind_speed,
  17. NEW.bullet_demolition_range
  18. );
  19. if var_check_result.is_check = False then
  20. raise notice 'error %', var_check_result.error_message;
  21. NEW.error_message := var_check_result.error_message;
  22. return NEW;
  23. end if;
  24. var_input_params := var_check_result.params;
  25. -- Формируем заговок
  26. var_response.header := public.fn_calc_header_meteo_avg(var_input_params);
  27. -- Формируем расчет
  28. call public.sp_calc_corrections(par_input_params => var_input_params,
  29. par_measurement_type_id => NEW.measurment_type_id,
  30. par_results => var_calc_result);
  31. var_response.calc_result := var_calc_result;
  32. -- Запоминаем результат
  33. NEW.calc_result = row_to_json(var_response);
  34. return NEW;
  35. end;
  36. $$
  37. LANGUAGE plpgsql;