Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgresql函数中获取动态变量。?_Postgresql - Fatal编程技术网

如何在postgresql函数中获取动态变量。?

如何在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

我正在使用postgresql查询从csv文件复制数据,并将该数据插入另一个表中。该查询工作正常,但我希望将该查询放入一个函数中,以便在我的c#应用程序中使用该函数。 这是一个运行良好的查询

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为”|"';使用新语法和错误消息更新问题。