postgresql – 格式()中整数变量的格式说明符,用于EXECUTE?
发布时间:2020-12-13 16:06:16 所属栏目:百科 来源:网络整理
导读:CREATE OR REPLACE FUNCTION getParentLtree(parent_id bigint,tbl_name varchar) RETURNS ltree AS$BODY$DECLARE parent_ltree ltree;BEGIN-- This works fine:-- select into parent_ltree l_tree from tbl1 where id = parent_id;EXECUTE format('select
CREATE OR REPLACE FUNCTION getParentLtree(parent_id bigint,tbl_name varchar) RETURNS ltree AS $BODY$ DECLARE parent_ltree ltree; BEGIN -- This works fine: -- select into parent_ltree l_tree from tbl1 where id = parent_id; EXECUTE format('select into parent_ltree l_tree from %I where id = %I',tbl_name,parent_id); RETURN parent_ltree; END; $BODY$LANGUAGE plpgsql; 上述功能有2个问题: > parent_id是整数但是用引号替换? int变量的正确格式说明符是什么? 解决方法
这将更短,更快,更安全:
CREATE OR REPLACE FUNCTION get_parent_ltree(parent_id bigint,tbl_name regclass,OUT parent_ltree ltree) AS $func$ BEGIN EXECUTE format('SELECT l_tree FROM %s WHERE id = $1',tbl_name) INTO parent_ltree USING parent_id; END $func$LANGUAGE plpgsql; 为什么? >最重要的是,使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |