最近参与了一个项目,发现里面的代码程序写的好厉害,摘取下来以便学习。
create or replace function DATA_TN_2_T0( P_INIT_DATE NUMBER(10),-----交易日期 P_ERROR_NO OUT NUMBER(10),----错误代码 P_ERROR_INFO OUT VARCHAR2(100)-----错误信息 ) RETURN NUMBER AS V_ROWCOUNT NUMBER(10);----记录数 V_COLUMNSTR VARCHAR2(4000);-----数据表属性 V_SQLSTR VARCHAR2(4000); -----执行的sql语句 V_WHERESTR VARCHAR2(4000); -----where条件 BEGIN FOR V_CUR IN ( SELECT USER_NAME, TABLE_NAME, BAK_TABLE_NAME, REMARK, WHERE_STR, INDEX_MODE FROM BAKCONFIG ----从配置表里面查询需要同步的TN表及对应的T0表,及用户名等 WHERE ... )LOOP SELECT COUNT(*) INTO V_ROWCOUNT FROM ALL_ALL_TABLES WHERE UPPER(OWNER)=UPPER(V_CUR.USER_NAME) AND UPPER(TABLE_NAME)=UPPER(V_CUR.BAK_TABLE_NAME);----查询用户是否有操作该数据表的权限 IF V_ROWCOUNT>0 THEN BEGIN V_COLUMNSTR :=' '; FOR V_COLUMN IN ( SELECT U.COLUMN_NAME FROM (SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE UPPER(OWNER)=UPPER(V_CUR.USER_NAME) AND TABLE_NAME=UPPER(V_CUR.TABLE_NAME))U, (SELECT COLUMN FROM ALL_TAB_COLUMNS WHERE UPPER(OWNER)=UPPER(V_CUR.USER_NAME) AND TABLE_NAME=UPPER(V_CUR.BAK_TABLE_NAME))L WHERE U.COLUMN_NAME=L.COLUMN_NAME ---找出TN与T0表共有的属性 )LOOP ----拼接成字符串 V_COLUMNSTR:=V_COLUMNSTR || V_COLUMN.COLUMN_NAME || ','; END LOOP; V_COLUMNSTR:=SUBSTR(V_COLUMNSTR,2,LENGTH(V_COLUMNSTR)-2); ----获取表的索引处理 IF V_CUR.INDEX_MODE='1' THEN INSERT INTO TMP_INDEX(INDEX_NAME,USER_NAME,TABLE_NAME,REMARK) SELECT INDEX_NAME,TABLE_OWNER,TABLE_NAME, DBMS_METADATA.GET_DDL('INDEX',INDEX_NAME,TABLE_OWNER) FROM USER_INDEXES WHERE TABLE_OWNER=V_CUR.USER_NAME AND TABLE_NAME=UPPER(V_CUR.BAK_TABLE_NAME); END IF; ---删除T0表数据 EXECUTE IMMEDIATE 'TRUNCATE TABLE '|| V_CUR.USER_NAME ||'.'|| UPPER(V_CUR.BAK_TABLE_NAME); ----删除表索引 FOR IDX_CUR IN(SELECT * FROM TMP_INDEX)LOOP V_SQLSTR:='DROP INDEX '|| IDX_INDEX.USER_NAME ||'.'||IDX_CUR.INDEX_NAME; EXECUTE IMMEDIATE V_SQLSTR; END LOOP; ----处理where条件 IF RITRIM(V_CUR.WHERE_STR) IS NOT NULL THEN V_WHERESTR:='WHERE'||V_CUR.WHERE_STR; ELSE V_WHERESTR:=' '; END IF; -----将日期换成当前的交易日 V_WHERESTR:=REPLACE(V_WHERESTR,'#INIT_DATE#',P_INIT_DATE); ------拼接执行语句 V_SQLSTR:='INSERT /*+APPEND*/INTO '|| V_CUR.USER_NAME ||'.'|| UPPER(V_CUR.BAK_TABLE_NAME)||'nologging('|| V_COLUMNSTR || ')'||'SELECT '|| V_COLUMNSTR|| ' FROM '||V_CUR.USER_NAME ||'.'|| V_CUR.TABLE_NAME || V_WHERESTR; ------执行语句 EXECUTE IMMEDIATE V_SQLSTR; ----创建索引 FOR IDX_CUR IN (SELECT * FROM TMP_INDEX)LOOP V_SQLSTR:=IDX_CUR.REMARK; EXECUTE IMMEDIATE V_SQLSTR; END LOOP; EXECUTE IMMEDIATE 'TRUNCATE TABLE TMP_INDEX'; COMMIT; END; END IF; END LOOP; COMMIT; RETURN (0); EXCEPTION WHEN OTHERS THEN ROLLBACK; P_ERROR_NO :=101; P_ERROR_INFO :='执行存储过程错误'||'DATA_TN_2_T0'; RETURN (P_ERROR_NO); END;
相关推荐
AT070TN94是一款常见的液晶显示屏模块,主要应用于电子设备如智能手机、平板电脑、车载显示屏等。...通过仔细阅读和理解这份手册,开发者可以有效地将AT070TN94集成到各种电子设备中,实现高质量的显示效果。
群创AT070TN83 LCD液晶屏是一款由群创电子生产的老型号液晶显示屏,其详细规格可以在群创AT070TN83的数据手册中找到。该手册最后一次修订是在2007年,其中包含有液晶屏的技术参数、接口定义、操作规范以及可靠性测试...
它是一种专用的触摸屏控制器,能够检测到用户对屏幕的触控,并将这些触控信息转化为可识别的数据。这种控制器通常包括信号调理电路、A/D转换器以及处理这些信号的微控制器单元(MCU)。AT070TN94的特点在于其能在...
开发者可以通过这些代码了解如何与传感器通信,以及如何解析返回的数据,从而将TN901传感器集成到自己的项目中。 5. **应用范围** TN901传感器广泛应用于各种场景,如: - 安全监控:例如,入侵检测系统和门窗...
2J10030 24C16 厦华TN3483 2J10030 24C16 北京松下管。这是实机copy下来的。
AT070TN92通常采用LVDS(低电压差分信号)接口进行数据传输,确保了数据传输的稳定性和高速性。 #### 原理图关键组件解析 在给定的AT070TN92原理图中,我们可以看到多个关键组件和引脚定义: 1. **LVDS接口**:...
- **数据输入格式**:规定数据输入的格式要求,以便于外部设备的数据传输。 - **时序**:包括扫描频率、同步信号要求等,确保画面稳定流畅。 ##### 5. 光学特性 - 包括对比度、亮度、视角等参数,确保屏幕具有良好...
在tn_kernel的压缩包中,"Kernel"文件可能是源代码或者编译后的二进制文件,开发者可以通过阅读源码理解其内部工作机制,或者直接将其烧录到八位单片机中进行运行。 总的来说,tn_kernel是一款为八位单片机量身定制...
本文将基于给定的技术参数文档,深入解析群创AT070TN90的主要特性与技术指标。 #### 基本参数 群创AT070TN90属于TN(Twisted Nematic)类型的LCD面板,这类面板具有成本效益高、响应速度快等特点,适合显示文字和...
根据提供的文档信息,我们可以深入解析Lattice公司的EPC2-6SE-5TN144 FPGA的数据手册,进一步了解这款产品的特性和应用领域。 ### 一、产品概述 EPC2-6SE-5TN144是一款由Lattice半导体公司推出的现场可编程门阵列...
描述中提到的“无线红外测温模块TN901/TN905测试程序,STM32F103”,表明这个项目不仅包括红外测温功能,还具备无线通信能力,可能是通过蓝牙或Wi-Fi等无线技术将温度数据传输到其他设备。STM32F103是STM32家族中的...
### 用ASP.NET在同一网页中显示主从关系表的相关数据 #### 方法概述 在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的...
TN5250是一款用于连接到IBM AS/400(现在称为IBM iSeries或IBM System i)系统的终端模拟器软件。这个名为"TN5250.rar"的压缩包包含了一些关键组件,使得用户可以在个人计算机上模拟AS/400的5250终端界面,以便访问...
- DMA同步:避免在DMA传输过程中修改缓冲区,以防止数据错乱。 - 功耗管理:根据设备状态调整LCD的亮度,甚至在空闲时关闭背光以节省电源。 5. **AT070TN92特定特性**: - AT070TN92支持多种显示模式,包括静态...
HDMI端口是该原理图的主要组件之一,负责将图像信号传输到显示设备。该部分使用了HDMI_TX0P、HDMI_TX0N、HDMI_TX1P、HDMI_TX1N、HDMI_TX2P、HDMI_TX2N等信号线,实现了图像信号的传输。同时,HDMI_CEC信号线用于控制...
凌阳TN红外模组是一款由凌阳科技设计的红外通信模块,主要应用于各种电子设备间的无线数据传输。这款模组采用高效能的红外技术,能够实现高速、稳定的数据传输,适用于智能家居、遥控器、物联网设备等多种场景。在...
5. 驱动集成:将驱动程序整合到操作系统或应用框架中,如Linux内核模块或Windows驱动模型。 在实际应用中,tn901测温模块常被用于各种场景,如: 1. 工业自动化:监控生产线上的温度,确保工艺过程的稳定。 2. ...
- **定时**:说明了信号之间的定时关系,如时钟信号与数据信号之间的同步。 #### 4. 光学规格 这部分详细描述了显示器的光学性能指标,如亮度、对比度、视角等,对于评估显示质量至关重要。 #### 5. 可靠性测试...