Параметр VARIADIC должен быть последним входным параметром

Как создать два параметра VARIADIC. Посмотри на мой код и поправь меня.

CREATE OR REPLACE FUNCTION ip_source_test(text,text,date,date,VARIADIC int[],VARIADIC text[])
RETURNS TABLE (no_documents int, "Report By" text, "Report_By" text) AS 
$$
BEGIN
IF 'Source Member' = $1 THEN
RETURN QUERY SELECT.....
ELSEIF 'company' = $1 THEN
RETURN QUERY SELECT.....
ELSE
RAISE NOTICE 'Not Worked';
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;

Error: VARIADIC parameter must be the last input parameter.

В коде SQL я должен использовать 6 параметров. Пожалуйста, обновите меня с примером кода.

2 ответа

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

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

CREATE FUNCTION ip_source_test(text,text,date,date,int[], text[])

Так же, как сообщение об ошибке говорит вам:

Параметр VARIADIC должен быть последним входным параметром.

Логично следует, что функция может принимать только один VARIADICпараметр как последний параметр. До этого могут быть другие (не VARIADIC) параметры. Цитирование руководства здесь:

По сути, все фактические аргументы на или за VARIADIC позиции собраны в одномерный массив

Другие вопросы по тегам