如何在plpgsql中使用变量内部函数
How to use variable inside function in plpgsql
我正在将来自触发器的值存储到 function.I 内的变量中,当我使用 function.Below 内的变量时出现错误是我的函数,触发器
CREATE OR REPLACE FUNCTION
edm.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
weekly_permit_table text := TG_ARGV[0];
BEGIN
Update edm.weekly_permit_table as a
set applicant = applicant||' '||'-'||' '||new.builder where
old.permit_number = split_part(a.permit_details, ' ',1);
RETURN NULL;
END;
还有我的触发器
CREATE TRIGGER builder_update_trigger_manual
AFTER UPDATE
ON edm.permit_table_manual_05_2017
FOR EACH ROW
WHEN (((old.builder)::text IS DISTINCT FROM (new.builder)::text))
EXECUTE PROCEDURE
edm.automated_builder_update_trigger_manual('weekly_permit_report_05_2017');
当我更新 'edm.permit_table_manual_05_2017' table 中的构建器值时,出现错误
'ERROR: relation edm.weekly_permit_table doesnot exist'
我知道这可能很愚蠢。但是我不确定我哪里错了。
CREATE OR REPLACE FUNCTION edm.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
weekly_permit_table text := TG_ARGV[0];
BEGIN
EXECUTE
format(
$q$
UPDATE edm.%I AS a SET
applicant = concat(applicant,' - '||)
WHERE
= split_part(a.permit_details, ' ',1)$q$,
weekly_permit_table)
USING NEW.builder, OLD.permit_number;
RETURN NULL;
END $BODY$;
我正在将来自触发器的值存储到 function.I 内的变量中,当我使用 function.Below 内的变量时出现错误是我的函数,触发器
CREATE OR REPLACE FUNCTION
edm.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
weekly_permit_table text := TG_ARGV[0];
BEGIN
Update edm.weekly_permit_table as a
set applicant = applicant||' '||'-'||' '||new.builder where
old.permit_number = split_part(a.permit_details, ' ',1);
RETURN NULL;
END;
还有我的触发器
CREATE TRIGGER builder_update_trigger_manual
AFTER UPDATE
ON edm.permit_table_manual_05_2017
FOR EACH ROW
WHEN (((old.builder)::text IS DISTINCT FROM (new.builder)::text))
EXECUTE PROCEDURE
edm.automated_builder_update_trigger_manual('weekly_permit_report_05_2017');
当我更新 'edm.permit_table_manual_05_2017' table 中的构建器值时,出现错误 'ERROR: relation edm.weekly_permit_table doesnot exist'
我知道这可能很愚蠢。但是我不确定我哪里错了。
CREATE OR REPLACE FUNCTION edm.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
weekly_permit_table text := TG_ARGV[0];
BEGIN
EXECUTE
format(
$q$
UPDATE edm.%I AS a SET
applicant = concat(applicant,' - '||)
WHERE
= split_part(a.permit_details, ' ',1)$q$,
weekly_permit_table)
USING NEW.builder, OLD.permit_number;
RETURN NULL;
END $BODY$;