2017-07-25 31 views
0

我有PostgreSQL的功能,它接受4個參數使用單引號PLPGSQL函數內的值

CREATE OR REPLACE FUNCTION public.manual_table_parsing_monthly_custom_edits(
schema_name text, 
main_permit text, 
manual_table text, 
permit_num text) 
RETURNS void AS 
$BODY$ 
DECLARE 
    e record; 
    load_move_count double precision; 
BEGIN 
    EXECUTE format('Insert into %I.%I(permit_date,permit_number,year,month_number, 
    report_permit_date,job_category,address,legal_description,neighbourhood,neighbourhood_number, 
    job_description,work_type,floor_area,construction_value,zoning,units_added, 
    latitude,longitude,location,count,building_type,building_type_number,filter,community, 
    groups,plan,block,lot,unit_id,dwelling,condo_fh,developer,builder,unit_address,construction_type,geom) 
      select permit_date,permit_number,year,month_number, 
    report_permit_date,job_category,address,legal_description,neighbourhood,neighbourhood_number, 
    job_description,work_type,floor_area,construction_value,zoning,units_added, 
    latitude,longitude,location,count,building_type,building_type_number,filter,community, 
    groups,plan,block,lot,unit_id,dwelling,condo_fh,developer,builder,unit_address,construction_type,geom 
from %I.%I 
where flag like ''move'' or flag like ''load'' and permit_number 
=%I',schema_name,main_permit,schema_name,manual_table,permit_number); 

最後一個參數的函數permit_number這是在where語句中使用的募集錯誤沒有列「YYYY 」。它是因爲%我在雙引號內取值。我應該如何編輯,以便該值在單引號內

回答

1

根據documentiaion%I應該用於標識符,%L應該用於文字值。

還應該使用$$引用,以方便讀取您的功能...