-- -- procedure acs_object__set_attribute/3 -- CREATE OR REPLACE FUNCTION acs_object__set_attribute( object_id_in integer, attribute_name_in varchar, value_in varchar ) RETURNS integer AS $$ DECLARE v_table_name varchar; v_column varchar; v_key_sql text; v_return text; v_storage text; BEGIN v_storage := acs_object__get_attribute_storage(object_id_in, attribute_name_in); v_column := acs_object__get_attr_storage_column(v_storage); v_table_name := acs_object__get_attr_storage_table(v_storage); v_key_sql := acs_object__get_attr_storage_sql(v_storage); if value_in is null then execute 'update ' || v_table_name || ' set ' || v_column || ' = NULL where ' || v_key_sql; else execute 'update ' || v_table_name || ' set ' || quote_ident(v_column) || ' = ' || quote_literal(value_in) || ' where ' || v_key_sql; end if; return 0; END; $$ LANGUAGE plpgsql;