临时表利用触发器同步到业务表

/*
  临时表同步到业务表的触发器

  INF_EMPLOYEE_INTF 用户临时表
  INF_EMPLOYEE  业务线表
*/

CREATE OR REPLACE TRIGGER INF_EMPLOYEE_INTF_BI
   BEFORE INSERT ON PADINFODATA.INF_EMPLOYEE_INTF
   FOR EACH ROW
when (NEW.PAIC_UM_NUM IS NOT NULL)
DECLARE
   V_UMCOUNT            NUMBER(10);
   V_EMPCOUNT           NUMBER(10);
   V_SQLCODE            VARCHAR2(6);
   V_SQLERRM            VARCHAR2(200);
   V_ERROR_COMMENT      VARCHAR2(300);
   V_EMPLOYEE_ID        PADINFODATA.INF_EMPLOYEE_INTF.EMPLOYEE_ID%TYPE;
BEGIN
   --如果此次新增ID在业务表有则update 否则 insert
   SELECT COUNT(0) INTO V_UMCOUNT FROM PADINFODATA.INF_EMPLOYEE E WHERE E.PAIC_UM_NUM = :NEW.PAIC_UM_NUM;
   IF V_UMCOUNT > 0 THEN
   	   UPDATE INF_EMPLOYEE A
       SET A.PAIC_EMPNO                  = :NEW.PAIC_EMPNO,
           A.ID_CARD_TYPE_CODE           = :NEW.ID_CARD_TYPE_CODE,
           A.PAIC_UM_NUM                 = :NEW.PAIC_UM_NUM,
           A.ID_CARD                     = :NEW.ID_CARD,
           A.NAME                        = :NEW.NAME,
           A.PERSON_STATUS_CODE          = :NEW.PERSON_STATUS_CODE,
           A.ORG_ID                      = :NEW.ORG_ID,
           A.ORG_NAME                    = :NEW.ORG_NAME,
           A.LOT_NUM                     = :NEW.LOT_NUM,
           A.ONBOARD_DATE                = :NEW.ONBOARD_DATE,
           A.BIRTH_DATE                  = :NEW.BIRTH_DATE,
           A.IS_REHIRE                   = :NEW.IS_REHIRE,
           A.LAST_ON_BOARD_DATE          = :NEW.LAST_ON_BOARD_DATE,
           A.ADDRESS                     = :NEW.ADDRESS,
           A.PHONE                       = :NEW.PHONE,
           A.PARTY                       = :NEW.PARTY,
           A.BIRTH_PLACE                 = :NEW.BIRTH_PLACE,
           A.SCHOOL                      = :NEW.SCHOOL,
           A.MAJOR                       = :NEW.MAJOR,
           A.EDUCATION_LEVEL_CODE        = :NEW.EDUCATION_LEVEL_CODE,
           A.HAS_CHILD                   = :NEW.HAS_CHILD,
           A.TEAM_LEADER_ID              = :NEW.TEAM_LEADER_ID,
           A.TEAM_LEADER_EMPNO           = :NEW.TEAM_LEADER_EMPNO,
           A.TEAM_LEADER_UM              = :NEW.TEAM_LEADER_UM,
           A.TEAM_LEADER_NAME            = :NEW.TEAM_LEADER_NAME,
           A.MANAGER_ID                  = :NEW.MANAGER_ID,
           A.MANAGER_EMPNO               = :NEW.MANAGER_EMPNO,
           A.MANAGER_UM                  = :NEW.MANAGER_UM,
           A.MANAGER_NAME                = :NEW.MANAGER_NAME,
           A.SERIES_CODE                 = :NEW.SERIES_CODE,
           A.CATEGORY_CODE               = :NEW.CATEGORY_CODE,
           A.POSITION_TYPE_ID            = :NEW.POSITION_TYPE_ID,
           A.POSITION_TYPE_DESC          = :NEW.POSITION_TYPE_DESC,
           A.POSITION_ID                 = :NEW.POSITION_ID,
           A.POSITION_DESC               = :NEW.POSITION_DESC,
           A.EMPL_CLASS                  = :NEW.EMPL_CLASS,
           A.EMPL_CLASS_DESC             = :NEW.EMPL_CLASS_DESC,
           A.NW_DESC                     = :NEW.NW_DESC,
           A.MAR_STATUS                  = :NEW.MAR_STATUS,
           A.PAIC_MARISTS_DESC           = :NEW.PAIC_MARISTS_DESC,
           A.SEX_CODE                    = :NEW.SEX_CODE,
           A.RECRUIT_CHANNEL_DESC        = :NEW.RECRUIT_CHANNEL_DESC,
           A.RECRUIT_SOURCE_DESC         = :NEW.RECRUIT_SOURCE_DESC,
           A.PAIC_NW_SW                  = :NEW.PAIC_NW_SW,
           A.XLATSHORTNAME               = :NEW.XLATSHORTNAME,
           A.PLACE_CODE                  = :NEW.PLACE_CODE,
           A.TMR_BUSINESS_MODE_CODE      = :NEW.TMR_BUSINESS_MODE_CODE,
           A.TMR_BUSINESS_MODE_DESC      = :NEW.TMR_BUSINESS_MODE_DESC,
           A.TH_PRODUCT_TYPE_CODE        = :NEW.TH_PRODUCT_TYPE_CODE,
           A.HY_BUSINESS_CATEGORY_CODE   = :NEW.HY_BUSINESS_CATEGORY_CODE,
           A.HY_BUSINESS_SUBCATE_CODE    = :NEW.HY_BUSINESS_SUBCATE_CODE,
           A.PC_ITEM_CODE                = :NEW.PC_ITEM_CODE,
           A.PC_ITEM_DESC                = :NEW.PC_ITEM_DESC,
           A.TMR_CATEGORY_CODE           = :NEW.TMR_CATEGORY_CODE,
           A.TMR_CATEGORY_DESC           = :NEW.TMR_BUSINESS_MODE_DESC,
           A.EDUCATION_LEVEL_DESC        = :NEW.EDUCATION_LEVEL_CODE,
           A.ONLINE_DATE                 = :NEW.ONLINE_DATE,
           A.PARTY_ROLE_CODE             = :NEW.PARTY_ROLE_CODE,
           A.PARTY_ROLE_DESC             = :NEW.PARTY_ROLE_DESC,
           A.CREATED_BY                  = :NEW.CREATED_BY,
           A.CREATED_DATE                = :NEW.CREATED_DATE,
           A.UPDATED_BY                  = :NEW.UPDATED_BY,
           A.UPDATED_DATE                = :NEW.UPDATED_DATE,
           A.PLACE_DESC                  = :NEW.PLACE_DESC,
           A.TH_PRODUCT_TYPE_DESC        = :NEW.TH_PRODUCT_TYPE_DESC,
           A.HY_BUSINESS_CATEGORY_DESC   = :NEW.HY_BUSINESS_CATEGORY_DESC,
           A.HY_BUSINESS_SUBCATE_DESC    = :NEW.HY_BUSINESS_SUBCATE_DESC,
           A.CTI_CODE                    = :NEW.CTI_CODE,
           A.TEL_NO                      = :NEW.TEL_NO,
           A.PLATFORM_CODE               = :NEW.PLATFORM_CODE,
           A.STAFF_NO                    = :NEW.STAFF_NO,
           A.SERIES_DESC                 = :NEW.SERIES_DESC,
           A.CATEGORY_DESC               = :NEW.CATEGORY_DESC,
           A.B_CREATED_DATE              = :NEW.B_CREATED_DATE,
           A.B_UPDATED_DATE              = :NEW.B_UPDATED_DATE,
           A.TMR_SKILL_LV_LIFE           = :NEW.TMR_SKILL_LV_LIFE,
           A.AGENT_CERTIFI_NUM           = :NEW.AGENT_CERTIFI_NUM,
           A.DATE_CERTIFI_VALID          = :NEW.DATE_CERTIFI_VALID,
           A.XB_TMR_BIZ_MODE_CODE        = :NEW.XB_TMR_BIZ_MODE_CODE,
           A.XB_WORK_PLACE_CODE          = :NEW.XB_WORK_PLACE_CODE,
           A.CALL_DISPLAY_NUMBER         = :NEW.CALL_DISPLAY_NUMBER,
           A.ZONE_MANAGER_ID             = :NEW.ZONE_MANAGER_ID,
           A.ZONE_MANAGER_EMP            = :NEW.ZONE_MANAGER_EMP,
           A.ZONE_MANAGER_UM             = :NEW.ZONE_MANAGER_UM,
           A.ZONE_MANAGER_NAME           = :NEW.ZONE_MANAGER_NAME,
           A.UCP_CODE                    = :NEW.UCP_CODE,
           A.CTS_PRODUCT_CODE            = :NEW.CTS_PRODUCT_CODE,
           A.CTS_TMR_FUNCTION_CODE       = :NEW.CTS_TMR_FUNCTION_CODE,
           A.OPERATION_TYPE              = :NEW.OPERATION_TYPE,
           A.TFZX_ID                     = :NEW.TFZX_ID,
           A.TFZX_NAME                   = :NEW.TFZX_NAME,
           A.TFQY_ID                     = :NEW.TFQY_ID,
           A.TFQY_NAME                   = :NEW.TFQY_NAME,
           A.TCQY_ID                     = :NEW.TCQY_ID,
           A.TCQY_NAME                   = :NEW.TCQY_NAME,
           A.TDEP_ID                     = :NEW.TDEP_ID,
           A.TDEP_NAME                   = :NEW.TDEP_NAME,
           A.EGRP_ID                     = :NEW.EGRP_ID,
           A.EGRP_NAME                   = :NEW.EGRP_NAME,
           A.ACCOUNT_MANAGER             = :NEW.ACCOUNT_MANAGER,
           A.ACCOUNT_MANAGER_LEVEL       = :NEW.ACCOUNT_MANAGER_LEVEL,
           A.DISA_RECOVERY_PLATFORM_CODE = :NEW.DISA_RECOVERY_PLATFORM_CODE,
           A.DISA_RECOVERY_CTI_CODE      = :NEW.DISA_RECOVERY_CTI_CODE,
           A.SOURCE_FROM                 = ‘TJS‘
           WHERE A.PAIC_UM_NUM           = :NEW.PAIC_UM_NUM;
   ELSE
	      SELECT COUNT(0) INTO V_EMPCOUNT FROM PADINFODATA.INF_EMPLOYEE E WHERE E.EMPLOYEE_ID = :NEW.EMPLOYEE_ID;

	      V_EMPLOYEE_ID := :NEW.EMPLOYEE_ID;

	      IF V_EMPCOUNT > 0 THEN
	         V_EMPLOYEE_ID := -1 * V_EMPLOYEE_ID;
	      END IF;

	      INSERT INTO INF_EMPLOYEE
	      (EMPLOYEE_ID,
	       PAIC_EMPNO,
	       PAIC_UM_NUM,
	       ID_CARD_TYPE_CODE,
	       ID_CARD,
	       NAME,
	       PERSON_STATUS_CODE,
	       ORG_ID,
	       ORG_NAME,
	       LOT_NUM,
	       ONBOARD_DATE,
	       BIRTH_DATE,
	       IS_REHIRE,
	       LAST_ON_BOARD_DATE,
	       ADDRESS,
	       PHONE,
	       PARTY,
	       BIRTH_PLACE,
	       SCHOOL,
	       MAJOR,
	       EDUCATION_LEVEL_CODE,
	       HAS_CHILD,
	       TEAM_LEADER_ID,
	       TEAM_LEADER_EMPNO,
	       TEAM_LEADER_UM,
	       TEAM_LEADER_NAME,
	       MANAGER_ID,
	       MANAGER_EMPNO,
	       MANAGER_UM,
	       MANAGER_NAME,
	       SERIES_CODE,
	       CATEGORY_CODE,
	       POSITION_TYPE_ID,
	       POSITION_TYPE_DESC,
	       POSITION_ID,
	       POSITION_DESC,
	       EMPL_CLASS,
	       EMPL_CLASS_DESC,
	       NW_DESC,
	       MAR_STATUS,
	       PAIC_MARISTS_DESC,
	       SEX_CODE,
	       RECRUIT_CHANNEL_DESC,
	       RECRUIT_SOURCE_DESC,
	       PAIC_NW_SW,
	       XLATSHORTNAME,
	       PLACE_CODE,
	       TMR_BUSINESS_MODE_CODE,
	       TMR_BUSINESS_MODE_DESC,
	       TH_PRODUCT_TYPE_CODE,
	       HY_BUSINESS_CATEGORY_CODE,
	       HY_BUSINESS_SUBCATE_CODE,
	       PC_ITEM_CODE,
	       PC_ITEM_DESC,
	       TMR_CATEGORY_CODE,
	       TMR_CATEGORY_DESC,
	       EDUCATION_LEVEL_DESC,
	       ONLINE_DATE,
	       PARTY_ROLE_CODE,
	       PARTY_ROLE_DESC,
	       CREATED_BY,
	       CREATED_DATE,
	       UPDATED_BY,
	       UPDATED_DATE,
	       PLACE_DESC,
	       TH_PRODUCT_TYPE_DESC,
	       HY_BUSINESS_CATEGORY_DESC,
	       HY_BUSINESS_SUBCATE_DESC,
	       CTI_CODE,
	       TEL_NO,
	       PLATFORM_CODE,
	       STAFF_NO,
	       SERIES_DESC,
	       CATEGORY_DESC,
	       B_CREATED_DATE,
	       B_UPDATED_DATE,
	       TMR_SKILL_LV_LIFE,
	       AGENT_CERTIFI_NUM,
	       DATE_CERTIFI_VALID,
	       XB_TMR_BIZ_MODE_CODE,
	       XB_WORK_PLACE_CODE,
	       CALL_DISPLAY_NUMBER,
	       ZONE_MANAGER_ID,
	       ZONE_MANAGER_EMP,
	       ZONE_MANAGER_UM,
	       ZONE_MANAGER_NAME,
	       UCP_CODE,
	       CTS_PRODUCT_CODE,
	       CTS_TMR_FUNCTION_CODE,
	       OPERATION_TYPE,
	       TFZX_ID,
	       TFZX_NAME,
	       TFQY_ID,
	       TFQY_NAME,
	       TCQY_ID,
	       TCQY_NAME,
	       TDEP_ID,
	       TDEP_NAME,
	       EGRP_ID,
	       EGRP_NAME,
	       ACCOUNT_MANAGER,
	       ACCOUNT_MANAGER_LEVEL,
	       DISA_RECOVERY_PLATFORM_CODE,
	       DISA_RECOVERY_CTI_CODE,
	       SOURCE_FROM)
	       VALUES
	        (V_EMPLOYEE_ID,
	         :NEW.PAIC_EMPNO,
	         :NEW.PAIC_UM_NUM,
	         :NEW.ID_CARD_TYPE_CODE,
	         :NEW.ID_CARD,
	         :NEW.NAME,
	         :NEW.PERSON_STATUS_CODE,
	         :NEW.ORG_ID,
	         :NEW.ORG_NAME,
	         :NEW.LOT_NUM,
	         :NEW.ONBOARD_DATE,
	         :NEW.BIRTH_DATE,
	         :NEW.IS_REHIRE,
	         :NEW.LAST_ON_BOARD_DATE,
	         :NEW.ADDRESS,
	         :NEW.PHONE,
	         :NEW.PARTY,
	         :NEW.BIRTH_PLACE,
	         :NEW.SCHOOL,
	         :NEW.MAJOR,
	         :NEW.EDUCATION_LEVEL_CODE,
	         :NEW.HAS_CHILD,
	         :NEW.TEAM_LEADER_ID,
	         :NEW.TEAM_LEADER_EMPNO,
	         :NEW.TEAM_LEADER_UM,
	         :NEW.TEAM_LEADER_NAME,
	         :NEW.MANAGER_ID,
	         :NEW.MANAGER_EMPNO,
	         :NEW.MANAGER_UM,
	         :NEW.MANAGER_NAME,
	         :NEW.SERIES_CODE,
	         :NEW.CATEGORY_CODE,
	         :NEW.POSITION_TYPE_ID,
	         :NEW.POSITION_TYPE_DESC,
	         :NEW.POSITION_ID,
	         :NEW.POSITION_DESC,
	         :NEW.EMPL_CLASS,
	         :NEW.EMPL_CLASS_DESC,
	         :NEW.NW_DESC,
	         :NEW.MAR_STATUS,
	         :NEW.PAIC_MARISTS_DESC,
	         :NEW.SEX_CODE,
	         :NEW.RECRUIT_CHANNEL_DESC,
	         :NEW.RECRUIT_SOURCE_DESC,
	         :NEW.PAIC_NW_SW,
	         :NEW.XLATSHORTNAME,
	         :NEW.PLACE_CODE,
	         :NEW.TMR_BUSINESS_MODE_CODE,
	         :NEW.TMR_BUSINESS_MODE_DESC,
	         :NEW.TH_PRODUCT_TYPE_CODE,
	         :NEW.HY_BUSINESS_CATEGORY_CODE,
	         :NEW.HY_BUSINESS_SUBCATE_CODE,
	         :NEW.PC_ITEM_CODE,
	         :NEW.PC_ITEM_DESC,
	         :NEW.TMR_CATEGORY_CODE,
	         :NEW.TMR_BUSINESS_MODE_DESC,
	         :NEW.EDUCATION_LEVEL_CODE,
	         :NEW.ONLINE_DATE,
	         :NEW.PARTY_ROLE_CODE,
	         :NEW.PARTY_ROLE_DESC,
	         :NEW.CREATED_BY,
	         :NEW.CREATED_DATE,
	         :NEW.UPDATED_BY,
	         :NEW.UPDATED_DATE,
	         :NEW.PLACE_DESC,
	         :NEW.TH_PRODUCT_TYPE_DESC,
	         :NEW.HY_BUSINESS_CATEGORY_DESC,
	         :NEW.HY_BUSINESS_SUBCATE_DESC,
	         :NEW.CTI_CODE,
	         :NEW.TEL_NO,
	         :NEW.PLATFORM_CODE,
	         :NEW.STAFF_NO,
	         :NEW.SERIES_DESC,
	         :NEW.CATEGORY_DESC,
	         :NEW.B_CREATED_DATE,
	         :NEW.B_UPDATED_DATE,
	         :NEW.TMR_SKILL_LV_LIFE,
	         :NEW.AGENT_CERTIFI_NUM,
	         :NEW.DATE_CERTIFI_VALID,
	         :NEW.XB_TMR_BIZ_MODE_CODE,
	         :NEW.XB_WORK_PLACE_CODE,
	         :NEW.CALL_DISPLAY_NUMBER,
	         :NEW.ZONE_MANAGER_ID,
	         :NEW.ZONE_MANAGER_EMP,
	         :NEW.ZONE_MANAGER_UM,
	         :NEW.ZONE_MANAGER_NAME,
	         :NEW.UCP_CODE,
	         :NEW.CTS_PRODUCT_CODE,
	         :NEW.CTS_TMR_FUNCTION_CODE,
	         :NEW.OPERATION_TYPE,
	         :NEW.TFZX_ID,
	         :NEW.TFZX_NAME,
	         :NEW.TFQY_ID,
	         :NEW.TFQY_NAME,
	         :NEW.TCQY_ID,
	         :NEW.TCQY_NAME,
	         :NEW.TDEP_ID,
	         :NEW.TDEP_NAME,
	         :NEW.EGRP_ID,
	         :NEW.EGRP_NAME,
	         :NEW.ACCOUNT_MANAGER,
	         :NEW.ACCOUNT_MANAGER_LEVEL,
	         :NEW.DISA_RECOVERY_PLATFORM_CODE,
	         :NEW.DISA_RECOVERY_CTI_CODE,
	         ‘TJS‘);
  END IF;

  EXCEPTION
  WHEN OTHERS THEN
    V_SQLCODE := SQLCODE;
    V_SQLERRM :=  SUBSTR(SQLERRM, 1, 200);
    V_ERROR_COMMENT := ‘Merge inf_employee umId:‘ || :NEW.paic_um_num;
    INSERT INTO PADINFODATA.TR_ERROR_LOG
      (ERROR_NO, --系统错误代码
       ERROR_MESSAGE, --系统错误信息
       TRIGGER_NAME, --出错的trigger
       TRIGGER_USER, --出错的用户
       TRIGGER_DATE, --出错的时间
       ERROR_COMMENT --出错详细信息
       )
    VALUES
      (V_SQLCODE,
       V_SQLERRM,
       ‘INF_EMPLOYEE_INTF_BI‘,
       ‘PADINFODATA‘,
       SYSDATE,
       V_ERROR_COMMENT);
END;

  

时间: 2024-10-19 16:27:56

临时表利用触发器同步到业务表的相关文章

利用触发器实现kettle数据同步

2016年8月17日 一.目的 通过触发器实现数据同步二.思路 1.在数据库需要同步的源表中建立一个insert触发器,当有新数据插入时,会自动将新插入数据的主键记录到临时表temp中.(当然也可以记录多个字段) 2.比较临时表temp和源表中的数据,匹配两个表中的主键值是否一致(也可以匹配多个字段),将符合条件的源表数据筛选出来,同步到目标表. 3.当同步完数据之后,清空temp表中的数据,进行下一轮同步.三.优缺点 1.优点 避免对相同数据的扫描,减少同步时间. 2.缺点 只在本地测试,未能

【转】mysql 触发器实现两个表的数据同步

mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新. 代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `a`.`触发器名` BEFORE UPDATE ON `a`.`table1` FOR EACH ROW BEGIN I

SQL触发器中的inserted表和deleted表

简介:开发也有年头了,但是触发器确实用的比较少,但是无容置疑触发器确实不错, 最近项目要求需要用到的触发器特别多.频繁,觉得很有必要记录和积累下. 在触发器语句中用两个特殊的表一个是deleted表和inserted. 它们是通过触发器操作自动创建驻留在内存中的临时表. ------------------------------------------------------------------------------------------------------------------

SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)

临时表:Test /****** 对象: Table [dbo].[Test] 脚本日期: 05/10/2013 11:42:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Test]( [ID] [int] IDENTITY(1,1) NOT NULL, [UserID] [int] NOT NULL, [UserName] [nvarchar](50) COLLATE Chines

如何解耦业务表单与流程

一.问题说明 使用工作流的系统,例如OA,ERP等,都会遇到当流程到达某些环节的时候,业务表单的某些字段有值的验证要求或只在该环节显示.隐藏. 二.解决方案 1.一般方案 在业务表单里使用流程环节的特征信息来对这些字段作控制,属于硬编码的方式,业务表单与流程的耦合度太高,污染了表单代码,会有点乱.可读性.可维护性.扩展性都会大大降低. 2.更好的方案 1).环节移动相关的 当前节点上的操作和数据决定了下一步怎么走,所以业务表单里的某些字段可能要拿来作判断的或临时提供一个选择器给用户,由用户来决定

备份_利用word编写导出多表语句

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/42104599 实验目标:利用word编写使用exp工具导出用户多表时的书写格式 实验环境: 操作系统:WINDOWS2008 64bit 数据库:ORACLE 11G R2 64bit 使用软件:word 2010.excel 2010.UltraEdit.PL/SQ

SQL触发器中的deleted表和inserted表

SQL触发器中的deleted表和inserted表 在触发器语句中用两个特殊的表一个是deleted表和inserted.它们是通过触发器操作自动创建驻留在内存中的临时表. 描述: Deleted表用于存储 DELETE和 UPDATE语句所影响的行的复本.在执行DELETE或 UPDATE语句时,行从触发器表中删除,并传输到 deleted表中.Deleted表和触发器表通常没有相同的行. Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本.在一个插入或更新事

mysql 利用触发器(Trigger)让代码更简单

一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了. 2,官方定义 触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行.触发器经常用于加强数据的完整性约束和业务规则等. 触发器可以从 DBA_TRIGGERS ,USER_TRIGGER

Winform开发框架中工作流模块的业务表单开发

在我们开发工作流的时候,往往需要设计到具体业务表单信息的编辑,有些是采用动态编辑的,有些则是在开发过程中处理的,各有各的优点,动态编辑的则方便维护各种各样的表单,但是数据的绑定及处理则比较麻烦,而自定义开发的,则数据弹性很大,方便修改调整.本篇随笔基于表单的开发设计过程,介绍在工作流中如何新增一个业务表单,以便快速的实现审批业务的上线处理. 1.业务表单的基类继承 首先我们来了解一下业务表单的对应关系,一般创建一个业务流程处理,都需要有一个具体的创建业务表单的界面,以及一个查看处理表单的界面.