我希望我的存储过程可以允许用户更新数据。
以下是该存储过程:
CREATE OR REPLACE FUNCTION update_table (
IN _table character varying,
IN _col_mod character varying,
IN _val_mod character varying,
IN _col_filter character varying,
IN _val_filter character varying
)
RETURNS void
AS
$$
BEGIN
RAISE NOTICE 'Update table %', _table;
EXECUTE ' UPDATE ' || quote_ident(_table) || ' SET ' || quote_ident(_col_mod) || ' = $1 WHERE ' || quote_ident(_col_filter) || ' = $2'
USING _val_mod, _val_filter;
END;
$$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;
我想问一下,这个过程是否高效?因为它看起来只是重新创建了查询。
我创建这样一个过程的原因是,在我的办公室里,有一个新政策,即不允许DBA直接对数据库执行查询。我们必须使用存储过程来执行DML和数据检索查询。
提前感谢.. :D