Я пытаюсь создать функцию для вставки данных в таблицу. Используемый мной запрос не будет изменяться, за исключением того, что имена схем должны быть переменными. Например, одно из моих имен схемы - bscu.members, а есть еще 35 очень похожих (wea.members, pcu.members ... и т. Д. И т. Я не смог найти никакой помощи в том, как создать функцию в Postgresql, используя переменные.
это то, что я придумал до сих пор, но это не работает
create or replace function attsummary(varchar)
RETURNS void
LANGUAGE plpgsql
AS $function$
BEGIN
insert into dwh.attribution_summary
select
m.source,
m.name,
m.partner_id,
d.ucic,
b.acct_type_desc as acct_desc,
a.begin_mo_balance as opening_balance,
c.date,
h.campaignname,
g.description as banner_desc,
f.create_time::timestamp as time_served,
'd' as dep_or_loan,
'h' as home_or_nonhome
from
$1.fact_deposits a
join $1.dim_acct_type b on a.acct_type_id = b.acct_type_id
join $1.dim_date c on a.date_id = c.date_id
join $1.dim_members d on a.ucic = d.ucic
join ad_delivery.sgmt_adic e on d.adic::varchar = e.adic
join ad_delivery.sgmt_user_tracker f on e.cookie_id = f.id
join ad_delivery.ox_banners g on g.bannerid = f.banner_id
join ad_delivery.ox_campaigns h on h.campaignid = f.campaign_id
join ad_delivery.sgmt_kli_adic i on e.adic = i.adic
join dwh.sgmt_clients m on m.partner_id = i.sgmt_partner_id
where
i.kli=8616208
and m.partner_id::integer != 909909
и затем следует мой оператор select ... Я использую $ 1 для моей переменной, где обычно указывается имя схемы.