-- -- news__clone/2 -- create or replace function news__clone( integer, integer ) returns int4 as $$ declare p_old_package_id alias for $1; --default null, p_new_package_id alias for $2; --default null one_news record; begin for one_news in select publish_date, cr.content as text, cr.nls_language, cr.title as title, cr.mime_type, cn.package_id, archive_date, approval_user, approval_date, approval_ip, ao.creation_date, ao.creation_ip, ao.creation_user, ci.locale, ci.live_revision, cr.revision_id, cn.lead from cr_items ci, cr_revisions cr, cr_news cn, acs_objects ao where cn.package_id = p_old_package_id and ((ci.item_id = cr.item_id and ci.live_revision = cr.revision_id and cr.revision_id = cn.news_id and cr.revision_id = ao.object_id) or (ci.live_revision is null and ci.item_id = cr.item_id and cr.revision_id = content_item__get_latest_revision(ci.item_id) and cr.revision_id = cn.news_id and cr.revision_id = ao.object_id)) loop perform news__new( null, one_news.locale, one_news.publish_date, one_news.text, one_news.nls_language, one_news.title, one_news.mime_type, p_new_package_id, one_news.archive_date, one_news.approval_user, one_news.approval_date, one_news.approval_ip, null, one_news.creation_ip, one_news.creation_user, one_news.live_revision = one_news.revision_id, one_news.lead ); end loop; return 0; end; $$ language plpgsql;