验证记录以更新字段PL/SQL
我正在尝试验证记录以执行更新,但它不正确 我的需要如下: 如果记录与“EC”不同,则会与已存在的记录合并进行更新 在“EC”时注册:验证记录以更新字段PL/SQL,sql,oracle,plsql,Sql,Oracle,Plsql,我正在尝试验证记录以执行更新,但它不正确 我的需要如下: 如果记录与“EC”不同,则会与已存在的记录合并进行更新 在“EC”时注册: "ID" "COD_MATRIZ" "CONCIL" "USER" "NOME_MBX" "SFTP" "CD" "MBX" 2 "2222222222" "EC" "CIEL.54321" "MB2222222222" "1" "1" "1" 当不是“EC”时: "ID"
"ID" "COD_MATRIZ" "CONCIL" "USER" "NOME_MBX" "SFTP" "CD" "MBX"
2 "2222222222" "EC" "CIEL.54321" "MB2222222222" "1" "1" "1"
当不是“EC”时:
"ID" "COD_MATRIZ" "CONCIL" "USER" "NOME_MBX" "SFTP" "CD" "MBX"
2 "2222222222" "NEXXERA" "CIEL.54321" "MB2222222222" "1" "1" "1"
如果它与“EC”不同,它会是什么样子:
"COD_MATRIZ" "CONCIL" "USER" "NOME_MBX" "SFTP "CD" "MBX"
"1036922364" "NEXXERA,CONCIL" "CIEL.188978" "MB1036922364" "1" "1" "1"
我在一个过程中进行此验证,请按照我尝试验证此问题的步骤中的代码进行操作:
SELECT CASE WHEN CONCIL = 'EC' AND COD_MATRIZ = P_COD_MATRIZ
THEN 1
ELSE 0
END AS VALIDA_CAMPO_CONCIL INTO V_EXISTS
FROM TB_EDIEXT_PERFIL;
IF V_EXISTS = 0
THEN
UPDATE TB_EDIEXT_PERFIL SET CONCIL = (SELECT CONCIL FROM TB_EDIEXT_PERFIL WHERE COD_MATRIZ = P_COD_MATRIZ)||','||P_CONCIL WHERE COD_MATRIZ = P_COD_MATRIZ;
ELSE
UPDATE TB_EDIEXT_PERFIL
SET CONCIL = P_CONCIL
WHERE COD_MATRIZ = P_COD_MATRIZ;
END IF;
问题在于,它只是替换CONCIL字段中的记录,并没有输入规则,即如果它与“EC”不同,则进行连接
有人知道如何解决这个问题吗
谢谢大家!
p_concil
和p_cod_matriz
看起来像程序的参数;对吧?
无论如何:对我来说,似乎一次更新
就能完成这项工作:
update tb_ediext_perfil t set
t.concil = case when t.concil = 'EC' then p_concil
else t.concil ||','|| p_concil
end
where t.cod_matriz = p_cod_matriz;