⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pacbody_regdateclass.sql

📁 图书管理系统
💻 SQL
📖 第 1 页 / 共 3 页
字号:
-- Start of DDL Script for Package Body ORALDBA.OMPS_PAGE_REGDATACLASS
-- Generated 13-一月-2008 0:14:35 from ORALDBA@ORAL

CREATE OR REPLACE 
PACKAGE BODY omps_page_regdataclass
  AS




-- To modify this template, edit file PKGBODY.TXT in TEMPLATE
-- directory of SQL Navigator
--
-- Purpose: Briefly explain the functionality of the package body
--
-- MODIFICATION HISTORY
-- Person      Date    Comments
-- ---------   ------  ------------------------------------------
   -- Enter procedure, function bodies as shown below

PROCEDURE PROC_OMPS_ADDNULLDATECLASS(                        --日期规则类型
      i_rulecode                  IN   VARCHAR2,              --规则类型ID号
      i_rulename                  IN   VARCHAR2,
      i_describe                  IN   VARCHAR2,              --规则描述
      i_startdate                 IN   VARCHAR2,
      i_overdate                  IN   VARCHAR2,
      i_maker1                    IN   VARCHAR2,
      i_state1                     IN   VARCHAR2,
      i_remark1                   IN   VARCHAR2,
      o_retCode                   OUT  VARCHAR2,           --返回标志,
      o_err_msg                   OUT  VARCHAR2            --错误信息
      )
   IS
    in_last_editor_time   varchar2(20) ;
      BEGIN  o_retCode := '0';
      in_last_editor_time := TO_CHAR(CURRENT_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS');
       INSERT INTO OPDATEClASSRULE
              (ruleid,rulecode,rulename,describes,startdate,enddate,maker1,state1,remark1,last_editor_time,state2)
              VALUES
              (OPDATERULE.NEXTVAL,i_rulecode,i_rulename,i_describe,i_startdate,i_overdate,i_maker1,i_state1,i_remark1,in_last_editor_time,'1');
            commit;

       EXCEPTION
		   WHEN OTHERS THEN
            o_err_msg := SQLCODE||SQLERRM;
			o_retCode := '-1';
            ROLLBACK;
			 RETURN;
  END PROC_OMPS_ADDNULLDATECLASS;

  PROCEDURE PROC_OMPS_ADDUNREGDATECLASS1(                        --日期规则类型
      i_rulecode                  IN   VARCHAR2,              --规则类型ID号
      i_rulename                  IN   VARCHAR2,
      i_describe                  IN   VARCHAR2,              --规则描述
      i_startdate                 IN   VARCHAR2,
      i_overdate                  IN   VARCHAR2,
      i_maker1                    IN   VARCHAR2,
      i_state1                     IN   VARCHAR2,
      i_remark1                   IN   VARCHAR2,
      i_datestr                   IN   VARCHAR2,
      o_retCode                   OUT  VARCHAR2,           --返回标志,
      o_err_msg                   OUT  VARCHAR2            --错误信息
      )
   IS        arrayobj   ctp_type_arraytype;
             i          NUMBER (10);
	          v_temp     VARCHAR2 (10);
             in_last_editor_time   varchar2(20) ;
             countdate          number;
                r       VARCHAR2(100);
                  t       t_table;
      BEGIN  o_retCode := '0';
        in_last_editor_time := TO_CHAR(CURRENT_TIMESTAMP,'YYYY-MM-DD HH24:MI:SS');
    select count(*) into countdate
           from OPDATEClASSRULE
          where (rulename=i_rulename) ;
          if(countdate=0)
          then
          INSERT INTO OPDATEClASSRULE
              (ruleid,rulecode,rulename,describes,startdate,enddate,maker1,state1,remark1,last_editor_time,state2)
              VALUES
              (OPDATERULE.NEXTVAL,i_rulecode,i_rulename,i_describe,i_startdate,i_overdate,i_maker1,i_state1,i_remark1,in_last_editor_time,'1');
            

          r := str2table(i_datestr
						  ,t);
						  

			FOR i IN t.FIRST .. t.LAST
			LOOP			
            INSERT INTO OPDATEClASS
            
          (id,opdate,state,ruleid)
           VALUES
       (OPDATE.NEXTVAL,t(i),i_state1,OPDATERULE.CURRVAL);
           
          	END LOOP;	
      
    else
          INSERT INTO OPDATEClASSRULE
              (ruleid,rulecode,rulename,describes,startdate,enddate,maker1,state1,remark1,last_editor_time,state2)
              VALUES
              (OPDATERULE.NEXTVAL,i_rulecode,i_rulename||OPDATERULE.CURRVAL,i_describe,i_startdate,i_overdate,i_maker1,i_state1,i_remark1,in_last_editor_time,'1');
            
            
             r := str2table(i_datestr
						  ,t);			

			FOR i IN t.FIRST .. t.LAST
			LOOP	
          INSERT INTO OPDATEClASS
          (id,opdate,state,ruleid)
           VALUES
       (OPDATE.NEXTVAL,t(i),i_state1,OPDATERULE.CURRVAL);
            
            END LOOP;
          end if;

       EXCEPTION
		   WHEN OTHERS THEN
            o_err_msg := SQLCODE||SQLERRM;
			o_retCode := '-1';
            ROLLBACK;
			 RETURN;
  END PROC_OMPS_ADDUNREGDATECLASS1;


  PROCEDURE PROC_OMPS_QUYREGDATECLASS1(
      i_maker1                    IN   VARCHAR2,
      i_state1                     IN   VARCHAR2,
   -- i_info                       IN   VARCHAR2,
      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_rule_ref_detail                 OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

      OPEN  o_rule_ref_detail  FOR
         SELECT ruleid,rulecode,rulename,describes,startdate,enddate,remark1
           FROM OPDATEClASSRULE
          WHERE (maker1 = i_maker1) AND
           (state1 = i_state1)
           ORDER BY  rulecode   asc
          ;
     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYREGDATECLASS1;

 PROCEDURE PROC_OMPS_DELUNREGDATERULE(
     i_ruleid                    IN   VARCHAR2,
   -- i_info                       IN   VARCHAR2,

      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2
      )

   IS
     BEGIN  o_retcode := '0';
          delete
           FROM OPDATEClASSRULE
          WHERE (ruleid = i_ruleid) ;

           delete
           FROM OPDATEClASS
          WHERE (ruleid = i_ruleid);

     EXCEPTION
      WHEN OTHERS
      THEN
      rollback;
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_DELUNREGDATERULE;

  PROCEDURE PROC_OMPS_QUYMAKER1(
      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_maker_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

      OPEN  o_maker_ref_detail  FOR
      SELECT distinct CTP_USER.ID,CTP_USER.NAME
           FROM OPDATEClASSRULE  left JOIN CTP_USER
           ON OPDATEClASSRULE.maker1 =CTP_USER.ID or OPDATEClASSRULE.maker2 =CTP_USER.ID
           where (OPDATEClASSRULE.state1 <>'1'  and  OPDATEClASSRULE.state1 <>'3')
           ORDER BY  CTP_USER.name   asc
          ;
     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYMAKER1;

  PROCEDURE PROC_OMPS_QUYMAKER2(
      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_maker2_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

      OPEN  o_maker2_ref_detail  FOR
      SELECT distinct CTP_USER.ID,CTP_USER.NAME
           FROM OPDATEClASSRULE  left JOIN CTP_USER
           ON OPDATEClASSRULE.maker1 =CTP_USER.ID
           ORDER BY  CTP_USER.name   asc
          ;
     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYMAKER2;

   PROCEDURE PROC_OMPS_QUYMAKER3(
       o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_maker3_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

      OPEN  o_maker3_ref_detail  FOR
      SELECT distinct CTP_USER.ID,CTP_USER.NAME
           FROM OPDATEClASSRULE  left JOIN CTP_USER
           ON OPDATEClASSRULE.maker1 =CTP_USER.ID
           where OPDATECLASSRULE.state1<>('2')
           ORDER BY  CTP_USER.name   asc
          ;
     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYMAKER3;

 PROCEDURE PROC_OMPS_QUYMAKER4(
      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_maker4_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

      OPEN  o_maker4_ref_detail  FOR
      SELECT distinct CTP_USER.ID,CTP_USER.NAME
           FROM OPDATEClASSRULE  left JOIN CTP_USER
           ON OPDATEClASSRULE.maker1 =CTP_USER.ID
           where OPDATECLASSRULE.state1=('2') 
           ORDER BY  CTP_USER.name   asc
          ;
     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYMAKER4;
  PROCEDURE PROC_OMPS_QUYDATECLASS1(
      i_rulename                   IN   VARCHAR2,
      i_rulecode                   IN   VARCHAR2,
      i_startdate                  IN   VARCHAR2,
      i_maker                      IN   VARCHAR2,
      i_state1                      IN   VARCHAR2,
   -- i_info                       IN   VARCHAR2,

      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_dateclass_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

   if(i_maker='所有人')
    then

      OPEN  o_dateclass_ref_detail  FOR
         SELECT a.ruleid,a.rulecode,a.rulename,
           a.describes,a.startdate,a.enddate,a.remark1,b.name,c.name,a.state1
           FROM OPDATEClASSRULE a  join ctp_user b on a.maker1=b.ID full join ctp_user c on a.maker2=c.ID
		   WHERE
           (a.state1 like '%'||i_state1||'%' ) and (upper(a.rulename) like '%'||upper(i_rulename)||'%') AND
           (upper(a.rulecode) like '%'||upper(i_rulecode)||'%')   AND
           (a.startdate like '%'||i_startdate||'%')

        ORDER BY  a.rulecode  desc;
else
      OPEN  o_dateclass_ref_detail  FOR
         SELECT a.ruleid,a.rulecode,a.rulename,a.describes,a.startdate,a.enddate,a.remark1,b.name,c.name,a.state1
           FROM OPDATEClASSRULE a join ctp_user b on b.ID=a.maker1 left join ctp_user c on c.ID=a.maker2
		   WHERE (a.state1 like '%'||i_state1||'%') and (upper(a.rulename) like '%'||upper(i_rulename)||'%') AND
           (upper(a.rulecode) like '%'||upper(i_rulecode)||'%')   AND
           (a.startdate like '%'||i_startdate||'%') AND
           (a.maker1 like '%'||i_maker||'%' or a.maker2 like '%'||i_maker||'%' )
        ORDER BY  a.rulecode  desc
          ;
          end if;


     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYDATECLASS1;


PROCEDURE PROC_OMPS_QUYDATECLASS2(
      i_rulename                   IN   VARCHAR2,
      i_rulecode                   IN   VARCHAR2,
      i_startdate                  IN   VARCHAR2,
      i_maker                      IN   VARCHAR2,
      i_state1                      IN   VARCHAR2,
   -- i_info                       IN   VARCHAR2,

      o_retCode                    OUT  VARCHAR2,
      o_err_msg                    OUT  VARCHAR2,
      o_dateclass_ref_detail            OUT  ref_detail
      )

   IS
     BEGIN  o_retcode := '0';

   if(i_maker='所有人')
    then

      OPEN  o_dateclass_ref_detail  FOR
         SELECT a.ruleid,a.rulecode,a.rulename,
           a.describes,a.startdate,a.enddate,a.remark1,b.name,c.name,a.state1
           FROM OPDATEClASSRULE a  join ctp_user b on a.maker1=b.ID full join ctp_user c on a.maker2=c.ID
		   WHERE
           (a.state1='1' or a.state1='2') and (upper(a.rulename) like '%'||upper(i_rulename)||'%') AND
           (upper(a.rulecode) like '%'||upper(i_rulecode)||'%')   AND
           (a.startdate like '%'||i_startdate||'%')

        ORDER BY  a.rulecode  desc;
else
      OPEN  o_dateclass_ref_detail  FOR
         SELECT a.ruleid,a.rulecode,a.rulename,a.describes,a.startdate,a.enddate,a.remark1,b.name,c.name,a.state1
           FROM OPDATEClASSRULE a join ctp_user b on b.ID=a.maker1 left join ctp_user c on c.ID=a.maker2
		   WHERE (a.state1='1' or a.state1='2' or a.state1='4') and (upper(a.rulename) like '%'||upper(i_rulename)||'%') AND
           (upper(a.rulecode) like '%'||upper(i_rulecode)||'%')   AND
           (a.startdate like '%'||i_startdate||'%') AND
           (a.maker1 like '%'||i_maker||'%' or a.maker2 like '%'||i_maker||'%' )
        ORDER BY  a.rulecode  desc
          ;
          end if;


     EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         o_retcode := '1';
         RETURN;
      WHEN OTHERS
      THEN
         o_retcode := '-1';
         RETURN;

  END PROC_OMPS_QUYDATECLASS2;

  PROCEDURE PROC_OMPS_QUYDETAILDATECLASS1(
      i_ruleid                    IN   VARCHAR2,

   -- i_info                       IN   VARCHAR2,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -