Выберите только одно значение столбца на основе идентификатора из таблицы и используйте в функции в postgresql - PullRequest
0 голосов
/ 26 марта 2019

Описание Я создаю функцию postgresql и столкнулся с проблемой.Я читаю данные из таблицы и на основании этих данных я хочу обновить данные или нет.

, но для выбора мне нужно либо создать временную таблицу, либо создать другую функцию, которая возвращает одно десятичное значение.

Вот мой код

Declare command text := 'select distance from road where gid ='|| id;
Execute command;

Я застрял в этой точке, я не знаю, что делать, поскольку я новичок в postgresql

Чтомне нужно

я хочу наложить условие на расстояние, возвращаемое этим запросом, например

IF distance < 100 
THEN
    (Insert into another table)
END;

Что я пробовал

select distance into varDistance from road where gid ='|| id;

Я прошёл команду «Выбрать в» и узнал, что это должно быть так же, как в таблице.что для меня неприемлемо.

Возможно ли иметь переменную двойного типа, и после запроса я получаю свою переменную, инициализированную значением?Или еще решение

1 Ответ

1 голос
/ 26 марта 2019

Мне неясно, что вы пытаетесь сделать, но чтобы прочитать одно значение из таблицы, вам понадобится select into

Что-то вроде:

create function some_function(p_id integer)
  returns ...
as
$$
declare
  l_distance double precision;
begin
  select distance 
     into l_distance
  from road
  where id = p_id; --<< this is the parameter

  if l_distance < 100 then 
    insert into some_other_table (...) 
    values (...)
  end if;

end;
$$
language plpgsql;

Из предоставленной вами небольшой информации я не вижу причин для динамического SQL.

Если вам нужен динамический SQL, используйте format()функция для создания строки SQL с заполнителем, затем используйте execute с оператором into и using

l_sql := format('select distance from %I gid = $1', l_table_name);
execute l_sql
  into l_distance
using p_id; --<< this is the parameter 
...