私は頻繁にpostgresqlのコピー機能を使用して、私はそれを利用するための機能を作成するだろうと思った。 それでは、私は関数内のpgsqlコマンドにどのようにパラメータを渡しますか?
create function getUsersCSV()
RETURNS void AS
$BODY$
BEGIN
COPY (select * from users)
TO 'c:\temp\users.csv'
WITH HEADER
CSV QUOTE '"' DELIMITER ',';
END
$BODY$
LANGUAGE PLPGSQL;
機能の動作を次の表
create table users
(
userid serial primary key,
prefix varchar(10) not null,
firstname varchar(255) not null,
lastname varchar(255) not null,
email varchar(500) not null,
password varchar(255) not null,
created timestamp not null,
modified timestamp not null
);
と、次の機能を持っていますが、私は
create function getUsersCSV(filepath varchar)
RETURNS void AS
$BODY$
BEGIN
COPY (select * from users)
TO filepath
WITH HEADER
CSV QUOTE '"' DELIMITER ',';
END
$BODY$
LANGUAGE PLPGSQL;
に機能を変更した場合、それは、次の構文エラーをスローしましょう エラー:「ファイルパス」またはその近くの構文エラー SQLの状態:42601
コピーコマンドの宛先値をパラメータ化する方法はありますか?
使用しているPostgreSQLのバージョンは? –
[plpgsql:FROM句への変数の連結]の重複可能性があります(http://stackoverflow.com/questions/6258345/plpgsql-concatenation-of-variable-into-from-clause) –