запрос не имеет места назначения для данных результата. Подсказка: если вы хотите отменить результаты SELECT, вместо этого используйте PERFORM.
Вы получаете эту ошибку, потому что вы не назначаетеприводит к любой переменной в функции. В функции вы обычно делаете что-то вроде этого:
select * into var1 from MY_TABLE;
Поэтому ваша функция будет выглядеть примерно так:
CREATE OR REPLACE FUNCTION createTable() RETURNS int AS $$
DECLARE
var1 my_table%ROWTYPE;
BEGIN
DROP TABLE IF EXISTS MY_TABLE;
CREATE TABLE MY_TABLE
(
ID integer
)
WITH (
OIDS=FALSE
);
insert into MY_TABLE values(1);
select * into var1 from MY_TABLE;
<do something with var1>
RETURN 'SUCCESS';
END;
$$ LANGUAGE plpgsql;
В противном случае, если вы не поставитерезультаты в переменную, то вы, вероятно, надеетесь достичь некоторого побочного эффекта (например, продвижение последовательности или запуск триггера каким-либо образом). В этом случае plpgsql ожидает, что вы будете использовать PERFORM
вместо SELECT
Кроме того, кстати, ваша функция RETURNS int
, но в нижней части вашего определения вы RETURN 'SUCCESS'
. SUCCESS
относится к типу text
, а не int
, поэтому в конечном итоге вы получите эту ошибку, как только получите это первое сообщение об ошибке - обязательно измените его при необходимости.