Параметр 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
позиции собраны в одномерный массив