sql - 合并oracle更新值但不插入,也不给出错误版本11g
问题描述
更新工作正常,但插入没有给出任何错误,也没有插入无法理解问题。
我要在其中插入/更新值的单个表
MERGE INTO SOFT_FILENAME A
USING (select TC, TC_DT, LASTNO
FROM SOFT_FILENAME
where TC = 'KMB'
AND to_date(tc_dt,'dd-mon-yyyy') = to_date(sysdate,'dd-mon-yyyy')) B
ON ( A.TC = 'KMB' AND to_date(A.tc_dt,'dd-mon-yyyy') = to_date(sysdate,'dd-mon-yyyy') AND A.TC_DT = B.TC_DT AND A.TC = B.TC)
when matched then
UPDATE
SET A.LASTNO = A.LASTNO + 1
WHERE A.TC = 'KMB'
AND to_date(A.tc_dt,'dd-mon-yyyy') = to_date(sysdate,'dd-mon-yyyy')
WHEN NOT MATCHED THEN
INSERT (A.TC, A.TC_DT, A.LASTNO) VALUES ('KMB', to_date(sysdate,'dd-mon-yyyy'), 1);
表脚本
create table A
(
TC CHAR(3),
TC_DT DATE,
LASTNO NUMBER(6)
)
使用过程实现此目的的替代方法如下,但我不想调用过程。以下是我想要使用合并实现的目标。
begin
select count(1)
into cou
FROM SOFT_FILENAME
where TC = V_TC
AND to_date(tc_dt, 'dd-mon-yyyy') = to_date(sysdate, 'dd-mon-yyyy');
if (cou = 0) then
INSERT into SOFT_FILENAME A
(A.TC, A.TC_DT, A.LASTNO)
VALUES
(V_TC, sysdate, 1);
else
UPDATE SOFT_FILENAME A
SET A.LASTNO = A.LASTNO + 1
WHERE A.TC = V_TC
AND
to_date(A.tc_dt, 'dd-mon-yyyy') =
to_date(sysdate, 'dd-mon-yyyy');
end if;
end
解决方案
推荐阅读
- html - 从选择标签中选择/取消选择全部选项
- excel - 匹配两个字符串然后复制粘贴数据
- python - what does the brackets behind lambda mean? - python
- javascript - 如何为作为道具传递给组件的函数编写测试用例
- c# - 如何在 Windows 窗体中使用 MediaPlayer c#
- java - 无法理解 Java 数组导致 IntelliJ(Java 中的新手)
- nestjs - 我的守卫自动嵌入到控制器 Nestjs 中的另一种方法
- angular - 如何创建充当窗口的工具提示?
- reactjs - 阻止日历滚动到下个月
- awk - 使用模式匹配以及前 6 列从第 7 列打印特定值