Я пытаюсь вызвать функцию внутри функции, используя sql в postgres 9.3.Вызов хранимой процедуры в хранимой процедуре
Этот вопрос относится к another post by me.
Я написал ниже функцию. До сих пор мне не удалось включить какой-либо оператор save-output (COPY), поэтому я пытаюсь обойти это, создав функцию отложенной функции.
CREATE FUNCTION retrieve_info(TEXT, TEXT) RETURNS SETOF
retrieve_info_tbl AS $$
SELECT tblA.id, tblA.method, tblA.species, tblA.location
FROM tblA
WHERE method=$1 AND species=$2
GROUP BY id, method, species
ORDER BY location
$$ LANGUAGE 'sql';
Вышеуказанная функция работает.
Попытка создать вложенную функцию.
CREATE FUNCTION print_out(TEXT, TEXT) RETURNS void AS $$
COPY (SELECT * FROM retrieve_info($1, $2)) TO 'myfilepath/test.csv'
WITH CSV HEADER;
$$ LANGUAGE 'sql';
Вызов вложенных функций.
SELECT * FROM print_out('mtd1','sp1');
ВЫВОД
выше дает это ERROR: column "$1" does not exist SQL state: 42P02 Context: SQL function "print_out" statement 1
. Однако, когда подставляя arg1, arg2 в print_out() с 'mtd1', '' sp1 правильный вывод распечатывается на test.csv (как показано ниже)
id | method | ind | location
----------------------------
1a | mtd1 | sp3 | locA
1d | mtd1 | sp3 | locB
Как бы я получить arg1, arg2 из retrieve_info() для правильного вызова arg1, arg2 в print_out()?
Я полностью застрял. Поблагодарили бы любые указатели, спасибо
тесно связаны: http://stackoverflow.com/questions/16019508/copy-with-dynamic-file-name/16021835# 16021835 и http://stackoverflow.com/questions/16991383/postgres-copy-from-variable-with-csv-data/16991854#16991854 –