Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入合并在Oracle中不起作用_Oracle_Merge_Upsert - Fatal编程技术网

插入合并在Oracle中不起作用

插入合并在Oracle中不起作用,oracle,merge,upsert,Oracle,Merge,Upsert,我是甲骨文的新手。我在Oracle中有一个表,它有4列Period、Open_Flag、Creation_Dt和Update_By。 句点列是表的主键。我已经创建了一个proc,它将检查表中输入参数的period值,如果它存在,则必须更新Open_标志的值,否则将插入一条新记录。 创建或替换 程序过程参考期 数字为V_期间,VARCHAR2中的V_打开标志,日期为V_创建,VARCHAR2中的V_更新 像 开始 合并到参考周期T中 使用SELECT*FROM REF\U SAP\U PERIOD

我是甲骨文的新手。我在Oracle中有一个表,它有4列Period、Open_Flag、Creation_Dt和Update_By。 句点列是表的主键。我已经创建了一个proc,它将检查表中输入参数的period值,如果它存在,则必须更新Open_标志的值,否则将插入一条新记录。 创建或替换 程序过程参考期 数字为V_期间,VARCHAR2中的V_打开标志,日期为V_创建,VARCHAR2中的V_更新 像 开始 合并到参考周期T中 使用SELECT*FROM REF\U SAP\U PERIOD,其中PERIOD=V\U PERIOD S T.周期=S.周期 匹配后,更新集打开标志=V_打开标志-其中周期=V_周期和创建时间=V_创建时间,更新时间=V_更新时间 如果不匹配,则插入期间、打开\u标志、创建\u DT、按值更新\u期间、打开\u标志、创建\u DT、更新\u依据; 终止
问题是,在这种情况下,更新工作正常,但是插入不起作用。请帮忙

您正在将表与自身合并,并按时段进行筛选。显然,它永远不会看到你不存在的价值观

请尝试此行,而不是使用以下行:

using (select V_PERIOD "period" from dual)S

请发短信。说我想帮助你;如果你发布了一些文字,我可以很容易地复制代码,尝试并编辑它;如果你发布了一张图片,我只是投票结束这个问题。抱歉@Aleksej…我现在更新了这个问题。谢谢@Alexander,你刚刚救了我一天。非常感谢。