我是Oracle的新手。
我在Oracle有一个表有4列Period,Open_Flag,Creation_Dt,Updated_By。 “期间”列是表的主键。
我已经创建了一个proc,它将检查表中输入参数的句点值,如果其存在,则必须更新Open_flag的值,否则应插入新记录。
create or replace PROCEDURE PROC_REF_SAP_PERIOD( V_PERIOD IN NUMBER,V_OPEN_FLAG IN VARCHAR2,V_CREATION_DT IN DATE,V_UPDATED_BY IN VARCHAR2) AS BEGIN MERGE INTO REF_SAP_PERIOD T USING (SELECT * FROM REF_SAP_PERIOD WHERE PERIOD=V_PERIOD )S ON (T.PERIOD=S.PERIOD ) WHEN MATCHED THEN UPDATE SET OPEN_FLAG = V_OPEN_FLAG --WHERE PERIOD=V_PERIOD AND CREATION_DT=V_CREATION_DT AND UPDATED_BY=V_UPDATED_BY WHEN NOT MATCHED THEN INSERT (PERIOD,OPEN_FLAG,CREATION_DT,UPDATED_BY) VALUES (V_PERIOD,V_OPEN_FLAG,V_CREATION_DT,V_UPDATED_BY); END;
问题是,在这种情况下更新工作正常,但插入不起作用。
请帮忙。插入合并不在Oracle中工作
-2
A
回答
0
您正在合并表与自身,按期间过滤。显然,它永远不会看到你自己不存在的价值。
试试这个行,而不是你的使用线:
using (select V_PERIOD "period" from dual)S
相关问题
- 1. Oracle合并/插入
- 2. 插入并选择组合不工作
- 3. 删除和插入不在oracle中的块中工作
- 4. 熊猫合并,并加入不工作
- 5. Oracle sql合并插入并删除但不更新
- 6. iOS SQLite插入并选择不工作?
- 7. 插入不工作在MYSQL
- 8. 插入在php不工作
- 9. 插入不工作
- 10. 插入不工作
- 11. 插入不工作
- 12. Date_part不在oracle中工作
- 13. CASE不在oracle中工作
- 14. 我在PHP中插入不工作
- 15. 插入查询不在mysql中工作
- 16. Ajax.Updater插入不在IE中工作
- 17. 如何在oracle中插入,并获取插入行的ID?
- 18. 插入并在节点循环中选择不工作
- 19. Oracle 11g - 只在工作日插入表中的FOR循环?
- 20. Oracle合并Sql插入目的地并从源删除
- 21. 导入* .csv并合并工作表
- 22. 我的Oracle合并不起作用
- 23. Oracle,合并陈述不起作用
- 24. 合并排序不工作
- 25. 合并策略不工作
- 26. HTML表合并不工作
- 27. hiera合并不工作
- 28. 在Oracle中合并两行
- 29. 插入日期值到oracle使用java不工作
- 30. 用c#形式的oracle插入语句不会工作?
请,文[不截图](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload -images-的代码上那么当-要价-A-问题/ 285557#285557)。说我想帮助你;如果您发布了一些文本,我可以轻松地复制代码,尝试编辑它;如果您发布图片,我只是投票结束该问题。 – Aleksej
对不起@Aleksej ...我现在已经更新了这个问题。 – Meen