如何在postgresql函数中获取动态变量。?
我正在使用postgresql查询从csv文件复制数据,并将该数据插入另一个表中。该查询工作正常,但我希望将该查询放入一个函数中,以便在我的c#应用程序中使用该函数。 这是一个运行良好的查询如何在postgresql函数中获取动态变量。?,postgresql,Postgresql,我正在使用postgresql查询从csv文件复制数据,并将该数据插入另一个表中。该查询工作正常,但我希望将该查询放入一个函数中,以便在我的c#应用程序中使用该函数。 这是一个运行良好的查询 copy emp_temp from 'd:\\temp.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"'; 这里emp_temp是表,temp.csv是我的文件 但是 当我使用上述函数时,如 create or replace function CopyToTabl
copy emp_temp from 'd:\\temp.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"';
这里emp_temp是表,temp.csv是我的文件
但是
当我使用上述函数时,如
create or replace function CopyToTable(file_path text,table_name text) returns void as
$body$
begin
copy quote_ident(table_name) from file_path WITH DELIMITER AS ',' CSV QUOTE AS '"';
end;
$body$
language plpgsql volatile
它显示了类似于
ERROR: syntax error at or near "file_path"...
根据一些建议,我还尝试使用动态sql
create or replace function CopyToTable(file_path text,table_name text) returns void as
$body$
begin
execute 'copy quote_ident(' || table_name || ')' || ' from ' ||
file_path || 'WITH DELIMITER AS ' || ',' || ' CSV QUOTE AS ' || '"';
end;
$body$
language plpgsql volatile
函数编译成功…但是当我通过运行函数来提供参数时
select * from CopyToTable('d:\\temp.csv','emp_temp')
它显示了错误
ERROR: syntax error at or near "d"
LINE 1: copy quote_ident(emp_temp) from d:\\temp.csvWITH DELIMITER ...
^
您需要使用动态SQL:感谢您的建议……但我已经使用了此选项,但仍然不确定“我已经使用了此选项”的含义-您的问题中没有动态SQL。请执行“复制quote_ident(”| | | | | | |“)”| |“from”| file| u path | |“from”,分隔符为“| |”,“CSV quote为”|"';使用新语法和错误消息更新问题。