我最后有删除语句。基本上,我只想删除合并返回的行或匹配。是否可以在一个MERGE INTO ${TABLE_NAME} T
USING (
SELECT
ERRORCODE, PROCESSINGFILENAME,
RECORDNUMBER from ERROR_UPLOAD_T
) TMP
ON (T.RECORDNUMBER = TMP.RECORDNUMBER and
T.PROCESSINGFILENAME= TMP.PROCESSINGFILENAME and
T.PROCESSINGFILENAME='${new_err_xml}')
WHEN MATCHED THEN
UPDATE SET
T.STATUS = 'ERROR',
T.ERRORSOURCE = 'BRM',
T.ERRORCODE = TMP.ERRORCODE
DELETE from ERROR_UPLOAD_T WHERE
PROCESSINGFILENAME like '${new_err_xml}';
语句中进行?
MERGE INTO ${TABLE_NAME} T
USING (
SELECT
ERRORCODE, PROCESSINGFILENAME,
RECORDNUMBER from ERROR_UPLOAD_T
) TMP
ON (T.RECORDNUMBER = TMP.RECORDNUMBER and
T.PROCESSINGFILENAME= TMP.PROCESSINGFILENAME and
T.PROCESSINGFILENAME='${new_err_xml}')
WHEN MATCHED THEN
UPDATE SET
T.STATUS = 'ERROR',
T.ERRORSOURCE = 'BRM',
T.ERRORCODE = TMP.ERRORCODE;
if (sql%rowcount > 0) then
DELETE from ERROR_UPLOAD_T WHERE
PROCESSINGFILENAME like '${new_err_xml}';
end if;
COMMIT;
END;
/
如果不可能这样,请告诉我更好的方法。使用sqlplus在shell脚本中调用此特定语句。
编辑:我试过这种方式,看起来很有效。BEGIN
for (var i = 0; i < menu.length; i++){
menu[i].firstchild.innerHTML.addEventListener("click", function(){
// Assign value of node clicked on to button
button.childNodes[0].nodeValue = menu[i].firstChild.innerHTML;
});
}
答案 0 :(得分:1)
我设法通过以下方式更改查询来实现结果。
BEGIN
MERGE INTO ${TABLE_NAME} T
USING (
SELECT
ERRORCODE, PROCESSINGFILENAME,
RECORDNUMBER from ERROR_UPLOAD_T
) TMP
ON (T.RECORDNUMBER = TMP.RECORDNUMBER and
T.PROCESSINGFILENAME= TMP.PROCESSINGFILENAME and
T.PROCESSINGFILENAME='${new_err_xml}')
WHEN MATCHED THEN
UPDATE SET
T.STATUS = 'ERROR',
T.ERRORSOURCE = 'BRM',
T.ERRORCODE = TMP.ERRORCODE;
if (sql%rowcount > 0) then
DELETE from ERROR_UPLOAD_T WHERE
PROCESSINGFILENAME like '${new_err_xml}';
end if;
COMMIT;
END;
/
答案 1 :(得分:1)
不,您不能从源表(来自using
子句)或其他地方删除作为合并本身的一部分。 From the documentation:
指定DELETE where_clause 以在填充或更新表时清理表中的数据。受此子句影响的唯一行是目标表中由合并操作更新的那些行。
所以你只能从目标表中删除,这不是你想要的。