整体要求:
1、先查询出父资源库分类的所有资源库属性元数据
2、然后再查询出父资源库分类的所有子资源库分类
3、最后将子分类中没有而父分类中有的资源库属性元数据插入到子资源库分类中
declare
--定义可以利用的资源库分类属性元数据值主键id
var_com_meta_value_id communitymetavalue.com_meta_value_id%type;--(最小值:17,最大值:521)
--定义临时最大place
var_max_place number;
--定义查询数量,用于判断是否存在
var_exists_count number;
--定义临时的资源库分类属性元数据field的id
var_com_meta_field_id communitymetavalue.community_mete_field_id%type;
--定义临时的资源库分类属性的值
var_com_meta_field_value communitymetavalue.text_value%type;
--定义临时community_id
var_community_id community.community_id%type;
var_number number;
--定义游标
--查询资源库分类的所有属性
cursor com_meta_cursor is
select comval.* from communitymetavalue comval
join communitymetadesc comdes on comdes.community_mete_field_id = comval.community_mete_field_id
where comval.object_id = 'sjk' and comval.object_type = 'community';
com_all_meta_record com_meta_cursor%rowtype;
--查询资源库分类的直接子资源库分类
cursor child_community_cursor is
select com.community_id from community com
join community2community c2c on c2c.parent_community_id = 'sjk' and c2c.community_id = com.community_id
where com.withdrawn = 'N';
type temp_table_type is table of com_all_meta_record%type
index by binary_integer;
temp_table temp_table_type;
begin
var_number:=1;
--初始化var_com_meta_value_id
var_com_meta_value_id:='17';
open com_meta_cursor;
loop
fetch com_meta_cursor into com_all_meta_record;
exit when com_meta_cursor%notfound;
temp_table(var_number):=com_all_meta_record;
var_number:=var_number+1;
end loop;
close com_meta_cursor;
--循环资源库子分类
open child_community_cursor;
loop
fetch child_community_cursor into var_community_id;
--查询数据库分类最大的place
select max(comval.place) into var_max_place from communitymetavalue comval
where comval.object_id = var_community_id and comval.object_type = 'community';
for i in 1..temp_table.count loop
--var_max_place加1,var_com_meta_value_id加1
var_max_place:=var_max_place+1;
var_com_meta_value_id:=to_char(to_number(var_com_meta_value_id)+1);
--查询该属性是否存在
select count(1) into var_exists_count
from communitymetavalue
where communitymetavalue.object_id = var_community_id and communitymetavalue.object_type = 'community'
and communitymetavalue.community_mete_field_id = var_com_meta_field_id;
if var_exists_count <= 0
then
--给数据库分类增加属性
dbms_output.put_line('insert into communitymetavalue (com_meta_value_id, community_id, community_mete_field_id, text_value, text_lang, place, is_set, community_type_id, object_id, object_type) values('''||var_com_meta_value_id||''', '''||var_community_id||''', '''||temp_table(i).community_mete_field_id||''', '''||temp_table(i).text_value||''', '''', '||var_max_place||', ''0'', ''rwsk'', '''||var_community_id||''', ''community'');');
end if;
end loop;
--当游标找不到数据时,退出
exit when child_community_cursor%notfound;
end loop;
--关闭游标
close child_community_cursor;
end;
初学Oracle,还请大虾们多多指教!
分享到:
相关推荐
《STM32 HAL库开发实战指南——F103系列》是针对STM32微控制器进行HAL库开发的一本实战教程,特别适用于基于F103系列的开发板。这本书由野火电子在2021年10月26日发布,旨在帮助开发者深入理解和应用STM32的HAL...
在本《Android项目实战——手机安全卫士开发案例解析》中,我们将深入探讨如何构建一个功能完备的手机安全应用,以此来提升用户设备的安全性与性能。这个项目不仅涵盖了Android应用开发的基础知识,还涉及到了高级...
在本项目"Qt 贴图实战——棋盘游戏.zip"中,主要涉及的是使用Qt框架开发一个棋盘游戏的实战应用。Qt是一个强大的跨平台应用程序开发框架,广泛用于创建图形用户界面(GUI)和非GUI应用程序。在这个实战项目中,我们...
首先,书本【野火EmbedFire】《STM32 HAL库开发实战指南——基于野火H743挑战者V2开发板》深入浅出地讲解了如何使用HAL库进行STM32的开发。作者通过实际项目和例程,帮助读者理解HAL库的各个函数接口和使用场景,...
《STM32 HAL库开发实战指南——F103系列》是一本专注于STM32微控制器的开发手册,特别针对F103系列芯片。该书由 EmbedFire 野火电子于2021年6月8日发布,旨在帮助开发者深入理解并实践STM32的HAL库开发。HAL库是意法...
【SSM实战项目——Java高并发秒杀API详解】 在这个Java实战项目中,我们主要探讨的是如何使用Spring、Spring MVC和MyBatis(SSM)框架来构建一个高并发的秒杀系统。这个项目旨在帮助开发者理解在处理大量并发请求时...
《STM32库开发实战指南——基于野火霸天虎开发板》是一本专注于STM32微控制器的库开发教程,特别适用于使用野火霸天虎开发板进行实践操作的读者。该书由野火电子在2021年1月22日发布,旨在帮助开发者掌握STM32的软件...
《Android经典项目开发实战》是一本深度探讨Android应用开发的实战指南,包含了丰富的PDF文档教程和配套源码,旨在帮助开发者提升在Android平台上的实践能力。这本书覆盖了多个实际应用场景,从基础到高级,全面讲解...
总的来说,“Android项目实战——手机安全卫士开发案例解析”涵盖了Android应用开发的多个重要方面,包括基本的项目构建、功能实现、安全性和性能优化。通过实际操作和学习随书提供的代码,开发者不仅能掌握Android...
这个“qt实战——时钟”项目显然是一个使用Qt库来创建一个简单时钟应用的小教程或实例。通过这个项目,开发者可以学习到如何利用Qt的特性构建用户界面,处理时间更新以及与操作系统进行交互。 首先,让我们详细了解...
《STM32 HAL库开发实战指南——基于野火挑战者开发板》是一本专注于STM32微控制器开发的实战教程,特别适用于初学者和有一定经验的开发者,通过使用野火挑战者开发板来实践HAL库的开发。这本书的目的是帮助读者理解...
《STM32库开发实战指南——基于野火霸天虎开发板》是一本专注于STM32微控制器的库开发教程,特别适用于初学者和有一定经验的开发者,希望通过实践来提升STM32应用开发技能。该资源是2021年1月13日更新的版本,包含了...
这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...
在本项目"基于Django的Web实战——电商项目"中,我们将深入探讨如何利用Python的Django框架构建一个完整的电子商务网站。Django是一款强大的、高级的Web开发框架,以其MVT(Model-View-Template)架构模式而闻名,...
《Android底层开发技术实战详解——内核、移植和驱动》这本书深入探讨了Android系统的底层机制,包括内核、系统移植以及设备驱动等关键领域。在Android操作系统中,这些部分是构建高效、稳定和功能丰富的应用的基础...
在本项目中,我们将深入探讨"贝叶斯算法-实战:新闻分类器"这一主题,这是一个非常适合机器学习初学者的实践项目。通过这个项目,你可以了解到如何利用贝叶斯算法来处理文本分类问题,特别是新闻文章的分类。下面将...
根据提供的文档信息,我们可以归纳出以下关键知识点,主要聚焦于STM32库开发及相关的实践指导: ### 一、项目背景及目标 - **项目名称**:STM32库开发实战指南 - **开发板型号**:野火指南者开发板(EmbedFire) -...
在本资源中,"Linux基础与应用开发实战指南——基于STM32MP1系列 配套代码.zip" 提供了一套完整的Linux系统开发教程,特别针对STM32MP1系列微处理器。STM32MP1是意法半导体(STMicroelectronics)推出的一款高性能、...
在本项目"Node实战——幼教平台"中,我们将探讨如何使用Node.js技术栈构建一个教育平台,特别是针对幼儿教育的资源部分。这个平台包含了文章的展示与修改功能,同时涉及用户权限管理,确保安全、有效的教育资源管理...
在本项目中,我们主要探讨的是Java SE平台下的图形用户界面(GUI)编程,通过一个经典的游戏——贪吃蛇来实现。贪吃蛇游戏的源码是JavaGUI编程的一个很好的实践示例,它综合运用了Java中的窗体组件、事件监听和...