要求格式为:
SL+当前时间+0001
测试表
create table Pdms_polling(
p_id INT PRIMARY KEY,
p_year date,
p_num varchar2(20)
);
-- 触发器.
CREATE OR REPLACE TRIGGER tr_auto_set_id
AFTER INSERT ON Pdms_polling
DECLARE
v_newID INT; -- 暂存主键
v_newNum varchar(30); -- 新的 流水号
v_oldNum varchar(30); -- 旧的流水号
-- 游标: 用于检索 当前表的所有 流水号字段为空的数据。
-- 将当天的所有数据,按顺序,自动编号排序
-- 该查询结果包含三列,分别为 ID, 现有的流水号, 按照 ROW_NUMBER 排序后的流水号。
CURSOR c_need_auto IS
SELECT
p_id,
p_num,
'SL'
|| TO_CHAR(p_year, 'YYYYMMDD')
|| TRIM(TO_CHAR(
ROW_NUMBER() OVER(PARTITION BY TO_CHAR(p_year, 'YYYYMMDD') ORDER BY p_id ),
'0000')) AS new_num
FROM
Pdms_polling
WHERE
EXISTS( SELECT 1
FROM Pdms_polling p2
WHERE TRUNC(p2.p_year) = TRUNC(Pdms_polling.p_year)
AND p_num IS NULL );
BEGIN
-- 打开游标.
OPEN c_need_auto;
LOOP
-- 填充数据(主表).
FETCH c_need_auto INTO v_newID, v_oldNum, v_newNum;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_need_auto%NOTFOUND;
-- 这里判断 旧流水号是否为 NULL, 假如为空的话,那么将其更新为 ROW_NUMBER 排序后的流水号。
-- 需要注意的是,假如你系统,不会去删除数据的话,那么没有问题。
-- 假如你的系统,会删除中间的数据的话,那么,会导致这里的流水号计算错误。
-- 那么可能就要把下面的 v_oldNum IS NULL 修改为 v_oldNum IS NULL OR v_oldNum != v_newNum
-- 结果也很明显,中间删除掉的流水号,会在某一次追加以后,被下一条依次填充上来。最后可能造成关联表的数据不匹配。
IF v_oldNum IS NULL THEN
UPDATE
Pdms_polling
SET
p_num = v_newNum
WHERE
p_id = v_newID;
END IF;
END LOOP;
-- 关闭游标
CLOSE c_need_auto;
END;
-- 测试:
SQL> INSERT INTO Pdms_polling VALUES(1, SYSDATE, NULL);
已创建 1 行。
SQL> INSERT INTO Pdms_polling VALUES(2, SYSDATE, NULL);
已创建 1 行。
SQL> INSERT INTO Pdms_polling VALUES(3, SYSDATE, NULL);
已创建 1 行。
SQL> INSERT INTO Pdms_polling
2 SELECT 4, SYSDATE, NULL FROM dual UNION ALL
3 SELECT 5, SYSDATE-1, NULL FROM dual UNION ALL
4 SELECT 6, SYSDATE+1, NULL FROM dual UNION ALL
5 SELECT 7, SYSDATE-1, NULL FROM dual UNION ALL
6 SELECT 8, SYSDATE+1, NULL FROM dual UNION ALL
7 SELECT 9, SYSDATE, NULL FROM dual ;
已创建6行。
SQL> ALTER session
2 SET nls_date_format='yyyy-mm-dd hh24:mi:ss';
会话已更改。
SQL> SELECT * FROM Pdms_polling;
P_ID P_YEAR P_NUM
---------- ------------------- --------------------
1 2011-06-09 20:51:55 SL201106090001
2 2011-06-09 20:51:55 SL201106090002
3 2011-06-09 20:51:55 SL201106090003
4 2011-06-09 20:51:55 SL201106090004
5 2011-06-08 20:51:55 SL201106080001
6 2011-06-10 20:51:55 SL201106100001
7 2011-06-08 20:51:55 SL201106080002
8 2011-06-10 20:51:55 SL201106100002
9 2011-06-09 20:51:55 SL201106090005
已选择9行。
分享到:
相关推荐
在实际操作中,可能会有一个专门的转换工具,比如压缩包中的"GPS数据转换道亨SL的ORG格式V1.5",这个工具可能已经内置了上述所有步骤,用户只需提供输入文件和输出文件路径,即可完成转换。使用这样的工具,可以大大...
SL0(Simultaneous Pursuit, Simultaneous Orthogonal Matching Pursuit)算法是压缩感知(Compressed Sensing, CS)领域中的一个经典方法。压缩感知理论指出,对于稀疏信号,可以通过较少的非线性测量来重构原始...
这一部分详细定义了ThinkPad SL400/SL500系列的产品特性,包括其规格、配置选项等信息,为用户提供了一个全面的产品概览。 #### FRU标识 对于定制(CTO)、客户制造(CMV)和政府(GAV)版本的产品,手册还提供了如何...
4. **组件开发**:"SL-291(JavaBeans Component Development)"这一文件名表明有一个关于JavaBeans组件开发的专题,JavaBeans是Java平台上的可重用软件组件标准。 5. **技术支持**:这些手册可能作为技术支持的一部分...
标题中的“一款纯国产USB 3.0 HUB芯片,型号SL6340”指的是一个完全由国内制造商设计和生产的USB 3.0集线器芯片,其具体型号为SL6340。USB 3.0 HUB芯片是用于扩展计算机或其他设备的USB接口数量,提供更高的数据传输...
压缩感知理论是20世纪末提出的一个重要概念,它打破了传统的采样定理,允许我们以低于奈奎斯特定理所要求的速率对信号进行采样,然后通过数学算法恢复原始信号。SL0算法在这一理论框架下,以其高效和准确的特性,被...
SL0算法则提供了一个不同于L1范数的近似方法,它通过一系列半定规划(SDP)松弛来逼近L0最小化问题。 在MATLAB环境中,SL0算法通常通过编写.m文件实现。给出的文件"SL0.m"应该包含了SL0算法的具体实现。在MATLAB...
在压缩包中,我们看到"OpenXmlPageTurn.csproj",这是一个Visual Studio项目文件,表明这个SL项目可能涉及到Open XML文档格式的处理。Open XML是一种标准格式,广泛用于Microsoft Office文档,如Word、Excel和...
linux sl小工具,非常有意思的小工具,一款小火车在屏幕上飞过!...sl 是一个搞笑软件或,也是一个 Unix 游戏。它会在你错误地把“ls”输入成“sl”(Steam Locomotive)后出现一辆蒸汽火车穿过你的屏幕。
本篇将通过"sl的一个小例子"——TreamSL1项目,来详细解析Silverlight的基本概念和关键特性。 首先,Silverlight是一种基于插件的运行时环境,它能够嵌入到Web浏览器中,为用户提供跨平台的多媒体和交互体验。...
Java SL275答案是一个关于Java编程的资源集合,它提供了与SL275相关的练习题解答,旨在帮助开发者深入理解和掌握Java编程语言的核心概念和技术。这个压缩包包含的源代码是经过精心编写的,可以帮助学习者节省大量...
SL会员商城系统是一款专为商业运营打造的在线平台,它集成了会员...综上所述,SL会员商城系统是一个全面的电子商务解决方案,涵盖了从设计、开发、测试到运营的全过程,旨在提供一个高效、安全、用户友好的购物环境。
SL3204是一款常用于替代HT1621的微控制器,...对于那些需要升级现有系统或开发新产品的工程师来说,SL3204是一个值得考虑的选择。同时,了解如何利用其内置的定时器和相关功能,对于实现高效的液晶显示控制至关重要。
智慧水务是一个利用信息化技术对水文、水质等进行监测、预警、控制的系统工程,对于提升水资源利用效率、保障水资源安全有着重要作用。 从内容部分提取,我们可以看到提及了多种通信协议和技术,例如GSM-SMS、CDMA-...
SL811HS集成了一个高性能的USB收发器,该收发器符合USB 2.0 Full Speed标准,最高数据传输速率为12 Mbps。这使得SL811HS能够在高速数据传输中表现出色,非常适合于需要快速数据交换的应用场景。 ### 注册表配置 ##...
USB2.0 HUB芯片SL2.2s是一款专为扩展USB接口设计的集成电路,它在个人电脑、移动设备和其他USB设备的连接中扮演着重要角色。SL2.2s利用了先进的Super Speed Switching (SSS)或Super STT(Super Speed Transfer)技术...
门禁系统是现代智能化生活的重要组成部分,特别是在家庭安全领域中起着至关重要的作用。本项目是基于单片机FM1702SL设计的一款家用门禁小程序,它...对于想要了解或开发类似系统的工程师来说,这是一个很好的学习案例。
- **额外的测光模式**:SL66SE相比SL66E增加了点测光模式,通过一个额外的开关实现,提高了拍摄时的灵活性。 #### 三、推荐打印页面 - **第3至6页**:这四页包含相机组件的详细图纸,并标注了参考编号,对于理解...