我有一個函式,我將 apath作為引數傳遞給檔案。在函式內,我想要COPY位于path
CREATE OR REPLACE FUNCTION load(path varchar)
RETURNS void
LANGUAGE plpgsql
AS
$$
BEGIN
COPY foo FROM path
WITH DELIMITER ';'
CSV HEADER;
...
end;
$$
這給出了Syntax Error,指向path。如果我對pathto 進行硬編碼C:\Users....,它會起作用。這是為什么?
uj5u.com熱心網友回復:
copy不適用于變數。塑造和執行動態 SQL。這是一個插圖 - 您的示例已修改。為清楚起見,我使用美元報價。
CREATE OR REPLACE FUNCTION load(path text) RETURNS void LANGUAGE plpgsql AS
$$
begin
execute replace(
$dynsql$
COPY foo FROM '__PATH__'
WITH DELIMITER ';'
CSV HEADER;
$dynsql$,
'__PATH__', path);
...
end;
$$
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313911.html
標籤:数据库 PostgreSQL plpgsql
下一篇:如何處理當前未驗證的用戶資料?
