Я пытаюсь выучить PL / pgSQL, написав несколько простых программ. Чтобы узнать о цикле FOREACH, я написал следующее:
CREATE OR REPLACE FUNCTION test(int[]) RETURNS void AS $$
DECLARE
window INT;
BEGIN
FOREACH window IN ARRAY $1
LOOP
EXECUTE 'SELECT $1' USING window;
END LOOP;
$$ LANGUAGE plpgsql;
SELECT test(ARRAY [30,60]);
Я ожидаю, что этот фрагмент кода сначала напечатает 30
, а затем 60
. Однако я получаю следующую ошибку.
psql:loop.sql:11: ERROR: syntax error at end of input
LINE 7: EXECUTE 'SELECT $1' USING window;
^
psql:loop.sql:13: ERROR: function test(integer[]) does not exist
LINE 1: SELECT test(ARRAY [30,60]);
^
HINT: No function matches the given name and argument types. You might need
to add explicit type casts.
Итак, определение функции имеет синтаксическую ошибку, но я не понимаю, что это за ошибка и как ее исправить. Буду признателен за любую помощь. Спасибо!