- 浏览: 230788 次
- 性别:
- 来自: 北京
文章分类
最新评论
CREATE OR REPLACE PROCEDURE P_BIG_TYPE_COMPONENT(BIG_CATEGORY_ID IN varchar2) as --DECLARE cols varchar2(256);-- 只声明 BIG_TABLE_NAME_PREFIX VARCHAR2(4000); CREATESQL VARCHAR2(4000); INSERTSQL VARCHAR2(4000); LEVEL_TABLE_COLS VARCHAR2(4000); TABLE_NUM NUMBER; BEGIN BIG_TABLE_NAME_PREFIX := 'CC_BIG_'; --获取大类下所有字段 (TODO 后续用,隔开数据 wm_concat ORACLE11要替换) select cols into cols from ( select distinct wm_concat( nvl2( (select soa.name from sm_object_attribute soa where soa.attr_id = cca.attr_id), ((select soa.name from sm_object_attribute soa where soa.attr_id = cca.attr_id) || ' varchar2(256),'), '' )) || 'ID varchar2(256) ' cols From ci_category_attr cca where cca.category_id in (select bc.category_id from br_category bc start with bc.category_id = BIG_CATEGORY_ID connect by prior bc.category_id = PARENT_ID) ); --删除表 SELECT COUNT(1) INTO TABLE_NUM FROM USER_TABLES WHERE TABLE_NAME = UPPER(BIG_TABLE_NAME_PREFIX||BIG_CATEGORY_ID); IF TABLE_NUM > 0 THEN EXECUTE IMMEDIATE ('drop table ' || BIG_TABLE_NAME_PREFIX||BIG_CATEGORY_ID ) ; END IF; --创建表 CREATESQL:='create table ' || BIG_TABLE_NAME_PREFIX||BIG_CATEGORY_ID || '(' || cols ||')'; dbms_output.put_line(CREATESQL); EXECUTE IMMEDIATE CREATESQL ; --2.将大类下所有叶子节点特有属性表数据查出来 ,获取所有子类, 取出表名, 再查询所有表名, 放入大表中保存; for bc in (select bc.table_name from br_category bc where level = 3 start with bc.category_id = BIG_CATEGORY_ID connect by prior bc.category_id = PARENT_ID) LOOP --小类列,作为大表的属性 (TODO 更改wm_concat方式) select COLUMN_NAME into LEVEL_TABLE_COLS from (select wm_concat(COLUMN_NAME) COLUMN_NAME from user_tab_columns where table_name =bc.table_name); dbms_output.put_line('小类(子表)属性:'||LEVEL_TABLE_COLS); --如果小类属性(LEVEL_TABLE_COLS)不为空,则将小类数据插入大类表中 if LEVEL_TABLE_COLS <>' ' then INSERTSQL:= 'insert into ' || BIG_TABLE_NAME_PREFIX||BIG_CATEGORY_ID||'('|| LEVEL_TABLE_COLS ||')' || ' select '||LEVEL_TABLE_COLS||' from '|| bc.table_name || ''; dbms_output.put_line(INSERTSQL); EXECUTE IMMEDIATE INSERTSQL ; COMMIT; END if; END LOOP; END; drop table CC_BIG_CC00000154 call P_BIG_TYPE_COMPONENT('CC00000154'); --遍历大类, 按大类创建带特有属性的大类表: DECLARE begin for bc in (select bc.category_id from br_category bc where parent_id = '1' ) LOOP P_BIG_TYPE_COMPONENT(bc.category_id||''); end loop; end;
---循环-----------------------------------------------
CREATE OR REPLACE PROCEDURE P_CREATE_BIG_TYPE_TABLE as begin for bc in (select bc.category_id from br_category bc where parent_id = '1' ) LOOP dbms_output.put_line(bc.category_id); P_BIG_TYPE_COMPONENT(bc.category_id||''); end loop; end; CALL P_CREATE_BIG_TYPE_TABLE()
---SQL执行后返回值存储-----------------------------------------------
EXECUTE IMMEDIATE 'select count(a.com_model) count_pp from jt_material a where a.com_model like ' || '''%' ||bc.com_model|| '%''' into count_pp;
------单引号转义----------------------------------------------
查看编译错误:
打开cmd窗口,执行时候后面加/ , 然后show error ,即可看到错误详情
发表评论
-
Oracle 递归查询
2017-11-30 10:23 1127递归查询基础结构 select … from tablen ... -
Oracle32bit 兼容性
2017-10-26 10:17 1096Oracle10G 32bit 安装在 server08:选择 ... -
Oracle11G密码到期ORA-28002
2017-08-03 09:34 540问题: 系统启动失败, 报错ORA-28002(oracle ... -
wm_concat和listagg用法,合并行数据
2017-06-27 15:48 1363方法一 wn_concat() 函数 1、把以下图中Na ... -
Decode与NVL和NVL2区别
2017-06-27 15:23 730Decode decode(条件,值1,翻译值1,值2,翻 ... -
乐观锁与悲观锁
2017-03-28 13:15 458悲观锁(Pessimistic Lock): ... -
在线格式化工具
2017-03-27 20:37 523比较实用的在线工具: http://tool.lu/ -
解决linux 下 oracle 11g 密码过期问题(ORA-28002)
2017-03-27 16:46 988问题形成:oracle11g 密码过期时间是180天: 查看过 ... -
mysql
2017-03-23 13:57 324查看安装路径:select @@basedir as base ... -
sqlite3创建数据库
2016-12-09 17:42 6651.将sqlite3.exe目录添加到环境变量中 2.创建数据 ... -
Sqlite安装
2016-12-09 16:41 572学习:http://www.runoob.com/sqlite ... -
oracle dba与resource角色的区别
2016-08-02 14:25 646拥有dba角色的用户,就是数据库管理员、可以访问和修改所有用户 ... -
Oracle获得当天0点时间
2016-05-10 17:58 2812SELECT To_char(Trunc(SYSDAT ... -
Oracle授权访问视图
2016-04-25 11:46 1406-----用sys账号登录注册新用户---------CREA ... -
oracle删除一条重复数据
2016-04-21 15:20 898查询及删除重复记录 ... -
Oracle Exists 实现 in like 混合使用
2015-12-08 17:23 2097select t.*, t.rowid from sm_u ... -
mysql 递归查询
2015-11-24 10:24 560CREATE TABLE nodelist( ... -
Oracle - 数据库的实例、表空间、用户、表之间关系
2015-11-12 14:31 743完整的Oracle数据库通常由两部分组成:Oracle数据库 ... -
Oracle授予用户权限
2015-11-12 14:23 6320Oracle授予用户权限 需要在Oracle里创建一个用 ... -
dbms_lob 的 instr和substr
2015-11-02 11:55 2175dbms_lob包学习笔记之三:instr和substr存储过 ...
相关推荐
SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...
在IT领域,尤其是在数据库管理与优化中,存储过程的解锁是一项关键技能,尤其对于Oracle数据库而言。当存储过程被锁定时,可能会影响系统的性能和稳定性,因此掌握如何解锁存储过程至关重要。以下是对“oracle存储...
SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...
SQL存储过程试题及答案 SQL存储过程是数据库中的一种程序单元,能够完成特定的数据库操作。今天,我们将讨论三道关于SQL存储过程的试题,这些试题涵盖了存储过程的创建、调用和参数传递等方面。 1. 创建分数存储...
在IT行业中,数据库操作是日常开发中的重要环节,而存储过程是数据库中一种高效、封装性强的预编译语句集合。本问题涉及到的是在PowerBuilder(简称Pb)环境中如何调用Oracle或SQL Server等数据库中的存储过程。以下...
在SQL Server中,存储过程分为不同种类,包括用户定义的存储过程、系统存储过程、临时存储过程以及扩展存储过程。 1. **用户定义的存储过程**:由开发人员或DBA创建,可以根据业务需求定制各种复杂操作,如数据处理...
PL/SQL Developer 调试存储过程及调试包中创建的存储过程 PL/SQL Developer 调试存储过程是指使用 PL/SQL Developer 工具来调试 Oracle 数据库中的存储过程。调试存储过程可以帮助开发者快速地定位和解决存储过程...
### 存储过程的优点 #### 一、提升执行效率 1. **编译优势**:存储过程在创建时仅编译一次,之后每次执行时都无需再次编译。相比之下,一般的SQL语句每次执行都需要重新编译。这种差异使得存储过程能够显著提高...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
在MySQL中,存储过程是一种预编译的SQL代码集合,它可以执行复杂的操作并提供更好的性能。在编写存储过程时,异常处理是确保程序稳定性和健壮性的重要环节。本实例展示了如何在MySQL存储过程中实现异常处理,以捕获...
《用友R9知识存储过程详解》 在IT行业中,特别是在企业级财务系统中,数据库的高效管理和数据处理是至关重要的。用友R9作为一款先进的财务管理系统,它利用存储过程这一强大的数据库功能来优化账务处理,提高系统...
在数据库管理中,存储过程和触发器是两个重要的概念,它们极大地增强了数据库的功能和效率。存储过程是一组预先编写的SQL语句,可以被多次调用,减少了网络流量,提高了性能,并提供了更好的安全性。而触发器则是一...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...
在Oracle数据库环境中,事务管理与存储过程的结合是实现数据一致性、事务回滚以及错误处理的关键技术之一。本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### ...
本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...
在数据库管理中,存储过程(Stored Procedure)是一种预编译的SQL代码集合,它封装了特定的功能,并在需要时由应用程序调用执行。存储过程在大型数据库系统中扮演着重要角色,因为它能提高性能、增强安全性、减少...