-- -- url__insert_or_update/8 -- create or replace function url__insert_or_update( character varying, character varying, character varying, text, text, integer, character varying, integer ) returns int4 as $$ DECLARE p_url_title ALIAS FOR $1; -- in bm_urls.url_title%TYPE, p_host_url ALIAS FOR $2; -- in bm_urls.host_url%TYPE default null, p_complete_url ALIAS FOR $3; -- in bm_urls.complete_url%TYPE, p_meta_keywords ALIAS FOR $4; -- in bm_urls.meta_keywords%TYPE default null, p_meta_description ALIAS FOR $5; -- in bm_urls.meta_description%TYPE default null, p_creation_user ALIAS FOR $6; -- in acs_objects.creation_user%TYPE default null, p_creation_ip ALIAS FOR $7; -- in acs_objects.creation_ip%TYPE default null, p_context_id ALIAS FOR $8; -- in acs_objects.context_id%TYPE default null v_n_complete_urls integer; v_return_id integer; v_new_url_id integer; BEGIN select count(*) into v_n_complete_urls from bm_urls where bm_urls.complete_url = p_complete_url; if v_n_complete_urls = 0 then select nextval('t_acs_object_id_seq') into v_new_url_id from dual; v_return_id := url__new( v_new_url_id, p_url_title, p_host_url, p_complete_url, null, null, p_creation_user, p_creation_ip, null ); return v_return_id; else select url_id into v_return_id from bm_urls where bm_urls.complete_url= p_complete_url; return v_return_id; end if; END; $$ language plpgsql;