CREATE OR REPLACE procedure init_vpd_web_providers( p_new_subscriber_id in number) is l_old_vpd_ctx wwsub_model.id_type; l_cnt number; l_prov_id_tab wwpro_login.id_table; l_provider_rec wwpro_provider_reg_private.provider_record; l_portlet_instance_record wwpro_api_provider.portlet_instance_record; begin -- Remember the original VPD context. l_old_vpd_ctx := wwctx_api_vpd.get_ctx; -- set vpd context to new subscriber id wwctx_api_vpd.set_ctx(p_new_subscriber_id); -- set the global portal context wwctx_api_private.set_context('portal'); select p.id bulk collect into l_prov_id_tab from wwpro_providers$ p where p.implementation_style = 3; -- retrieve info for all template providers l_cnt := 1; while (l_cnt <= l_prov_id_tab.count) loop l_provider_rec := wwpro_provider_reg_private.get_provider(l_prov_id_tab(l_cnt)); -- call Web Provider's register provider method begin wwpro_http.register_provider(l_provider_rec); exception when others then dbms_output.put_line('Error when register provider ' || l_provider_rec.id); end; -- Call register_portlet for each portlet instance that belongs to -- this web provider. for x in (select portlet_id, ref_path from wwpob_portlet_inst$ where provider_id = l_provider_rec.id) loop begin l_portlet_instance_record.provider_id := l_provider_rec.id; l_portlet_instance_record.portlet_id := x.portlet_id; l_portlet_instance_record.reference_path := x.ref_path; wwpro_http.register_portlet(l_provider_rec, l_portlet_instance_record); exception when others then dbms_output.put_line('Error when register portlet ' || x.portlet_id || ' in provider ' || l_provider_rec.id); end; end loop; l_cnt := l_cnt + 1; end loop; -- Restore original VPD context. wwctx_api_vpd.set_ctx(l_old_vpd_ctx); commit; exception when others then dbms_output.put_line('Exception in init_vpd_web_providers'); dbms_output.put_line('SQLERRM = ' || sqlerrm || ' SQLCODE = ' || sqlcode); rollback; -- Restore original VPD context. wwctx_api_vpd.set_ctx(l_old_vpd_ctx); end init_vpd_web_providers; /