--函數建立
CREATE OR REPLACE FUNCTION public.cdp_pro_trunc_lsb_test(v_lsb_name character varying)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE
/*
* v_lsb_name 臨時表的名稱
* 項目子產品:
* 負責人:
* 時間:
*/
---清空臨時表
pSql text;
V_ERR_MSG text;
v_log text;
v_lsb_jgb_name text;
v_lsb_date varchar(10); ---YYYY-MM-DD
v_term varchar(20);
v_max_auto_date text;
v_p text;
isExist boolean;
BEGIN
-- 插入注釋
insert into t_tab_log(table_name,tab_hive_date,tab_psql_date,do_date,status,message)
values(v_lsb_name,'','',now(),'S','sql語句');
return 'ok';
EXCEPTION
WHEN OTHERS THEN
V_ERR_MSG := SQLERRM;
RAISE exception '(%)',SQLERRM;
V_ERR_MSG := SQLERRM;
insert into t_tab_log(table_name,tab_hive_date,tab_psql_date,do_date,status,message)
values(v_lsb_name,'','',now(),'F',V_ERR_MSG);
return V_ERR_MSG;
END;
$function$
----------------------------------------PG 存儲函數調用變量的3種方法----------------------------
CREATE OR REPLACE FUNCTION public.update_student(id integer)
RETURNS text AS
$BODY$
declare sql_str_run text;
BEGIN
--method 1
select 'update student set remark ='''|| now() ||''' where student.id = '|| $1 into sql_str_run ;
execute sql_str_run;-- 如果變量本身也是需要需要通過函數或語句的計算來獲得,使用method1
--method 2
execute 'update student set remark =now() where student.id=$1' using $1; --如果需要拼的變量可以直接擷取的,使用method2
--method 3
update student set remark =now() where student.id=$1; --推薦使用
return 'update is ok' ;
end
$BODY$
LANGUAGE plpgsql VOLATILE