Oracle工作纪要3

创建存储过程 查询 出两个oracle 指定用户下所指定 表的公共列的差集

包头部分:

create or replace package WS_Check_Comparisons is
 --添加组织,
   type PUBLICK_ATTRIBUTE_TABLES is REF CURSOR;
    PROCEDURE TWOCOMPARISONS(
                                           P_CUR         OUT BASE_CONSTANT.T_CUR,
                                           P_CUR2             OUT PUBLICK_ATTRIBUTE_TABLES, 
                                           TABLE_START_OUT OUT  VARCHAR2,     
                                           TABLENAMECHECK_ONE VARCHAR2,
                                           TABLENAMECHECK_TWO VARCHAR2,
                                           TABLENAMECHECK_ONE_P VARCHAR2,
                                           TABLENAMECHECK_TWO_P VARCHAR2,
                                           P_QUERY_TYPE      NUMBER DEFAULT 0);
                   
end WS_Check_Comparisons;

包体:

CREATE OR REPLACE PACKAGE BODY WS_CHECK_COMPARISONS IS
  ---进行2表的
 --type PUBLICK_ATTRIBUTE_TABLES is REF CURSOR;-- 两表的公共列
 --先根据2表查询有无公共列,无,返回空集。有进行下一步分条件查询
                         /*  P_CUR              返出的数据集
                           P_CUR2    
                            TABLE_START_OUT          
                           TABLENAMECHECK_ONE 传入的表名1
                           TABLENAMECHECK_TWO V传入的表名2
                     
                           
                           P_QUERY_TYPE       查询类型
                           ,
                           SELECT_TYPE_LIBRARY NUMBER DEFAULT 0
                           TWO_COUNT NUMBER;  两表的公共列个数
                            ONE_COLUMN  要查询的列名集合
                           TABLE_ONE  组合分割后的表名1
                           TABLE_TWO 组合分割后的表名2*/
                           --1和2的情况 1.syscd为主 如果有数据需要插入base 表 2.
                           
  PROCEDURE TWOCOMPARISONS(P_CUR              OUT BASE_CONSTANT.T_CUR,
                           P_CUR2             OUT PUBLICK_ATTRIBUTE_TABLES,  
                           TABLE_START_OUT OUT  VARCHAR2,               
                           TABLENAMECHECK_ONE VARCHAR2,
                           TABLENAMECHECK_TWO VARCHAR2, 
                           TABLENAMECHECK_ONE_P VARCHAR2,
                           TABLENAMECHECK_TWO_P VARCHAR2,
                           P_QUERY_TYPE       NUMBER DEFAULT 0 
                           ) AS  
                           TWO_COUNT NUMBER;
                           ONE_COLUMN VARCHAR2(3999);
                          
                           SELECT_TYPE_ZERO   VARCHAR2(3999);      
                           SELECT_TYPE_ONE   VARCHAR2(3999);
                           SELECT_TYPE_TWO   VARCHAR2(3999);
                           
                         
  BEGIN 
        --******************************-- 
        
        --******************************--
                       
        ---查询两表的公共列                 
        SELECT COUNT(*) INTO TWO_COUNT FROM(
        SELECT * FROM( SELECT  COLUMN_NAME  FROM ALL_TAB_COLS WHERE TABLE_NAME =  TABLENAMECHECK_ONE) tb1 
        INTERSECT
        SELECT * FROM( SELECT  COLUMN_NAME  FROM ALL_TAB_COLS WHERE TABLE_NAME =  TABLENAMECHECK_TWO) tb2 );
        ---查询两表的公共列
        IF TWO_COUNT <= 0 THEN
          --标识没有相同的列直接不查询 返回空的结果集
          P_CUR:= NULL;
        ELSE 
           --标识有相同的直 分条件判断
             --查询公共的列部分
             SELECT WMSYS.WM_CONCAT(COLUMN_NAME) INTO ONE_COLUMN FROM (
              SELECT * FROM( SELECT  COLUMN_NAME  FROM ALL_TAB_COLS WHERE TABLE_NAME = TABLENAMECHECK_ONE) tb1 
              INTERSECT 
              SELECT * FROM( SELECT  COLUMN_NAME  FROM ALL_TAB_COLS WHERE TABLE_NAME = TABLENAMECHECK_TWO) tb2 
              ) ;
             --查询公共的列部分
          SELECT_TYPE_ONE :=   'SELECT '|| ONE_COLUMN ||' FROM '||TABLENAMECHECK_ONE_P||'.'||TABLENAMECHECK_ONE||' MINUS SELECT  '|| ONE_COLUMN ||' FROM '||TABLENAMECHECK_TWO_P||'.'||TABLENAMECHECK_TWO;
          SELECT_TYPE_TWO :=   'SELECT '|| ONE_COLUMN ||' FROM '||TABLENAMECHECK_TWO_P||'.'||TABLENAMECHECK_TWO||' MINUS SELECT  '|| ONE_COLUMN ||' FROM '||TABLENAMECHECK_ONE_P||'.'||TABLENAMECHECK_ONE;
        
          IF P_QUERY_TYPE = 0 THEN 
           OPEN P_CUR FOR
             SELECT * FROM USER_TABLES;
        
          ELSIF P_QUERY_TYPE = 1 THEN
            -----1-----------
            OPEN P_CUR FOR
             SELECT_TYPE_ONE ;
              TABLE_START_OUT:= '查询成功';
             -----1-----------                                                               
          ELSIF P_QUERY_TYPE = 2 THEN
            OPEN P_CUR FOR
              SELECT_TYPE_TWO ;
              TABLE_START_OUT:= '查询成功';
          
          ELSE
               P_CUR :=NULL;
               TABLE_START_OUT:= '查询失败';
            
          END IF;
           --标识有相同的直 分条件判断
        END IF;
            --******************************--
        
         
           
   
  END TWOCOMPARISONS;
  ---存储过程结束
END WS_CHECK_COMPARISONS;

首先根据传入的表的名称和用户 查询出2个表的公共列并判断公共个数,然后查询公共列的差集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值