Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
验证记录以更新字段PL/SQL_Sql_Oracle_Plsql - Fatal编程技术网

验证记录以更新字段PL/SQL

验证记录以更新字段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"

我正在尝试验证记录以执行更新,但它不正确

我的需要如下: 如果记录与“EC”不同,则会与已存在的记录合并进行更新

在“EC”时注册:

"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;