Я хочу, чтобы моя хранимая процедура позволяла пользователю обновлять данные.
Вот процедура:
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;
Я хочу спросить, эффективна ли эта процедура? , потому что, похоже, я просто заново создаю запрос.
И причина, по которой я создаю такую процедуру, заключается в том, что в моем офисе была новая политика, согласно которой администратор баз данных не разрешал выполнять запросы непосредственно в базу данных.Мы должны использовать хранимую процедуру, чтобы сделать DML также запросом на получение данных.
Заранее спасибо ..: D