-1

我们需要 INSERT 或 UPDATE 表的数据 advisor_skill ,创建所需的函数、程序……接受任务的顾问 ID、技能 ID 和认证状态。该程序应该足够用户友好,以处理所有可能的错误,例如顾问 ID、技能 ID 不存在或认证状态不同于“Y”、“N”。确保显示:顾问姓氏、名字、技能描述和执行的 DML 确认(提示:不要忘记在过程中添加 COMMIT)

CREATE OR replace PROCEDURE nw (p_c_id          NUMBER, 
                                p_s_id          NUMBER, 
                                p_certification VARCHAR2) 
AS 
  v_c_id          NUMBER := p_c_id; 
  v_s_id          NUMBER := p_s_id; 
  v_certification VARCHAR2(20); 
  flag            NUMBER(3); 
BEGIN 
  SELECT count(*) 
  INTO   flag 
  FROM   consultant_skill 
  WHERE  c_id = v_c_id 
  AND    skill_id = v_s_id; 

  dbms_output.Put_line (flag); 
  IF flag > 0 THEN 
    UPDATE consultant_skill 
    SET    skill_id = p_s_id, 
           certification = p_certification 
    WHERE  c_id = v_c_id; 

  ELSE 
    dbms_output.Put_line ('bye bye'); 
  END IF; 
END; 
/ 

卡在更新本身..尚未尝试在其他块中插入..首先尝试更新部分..不知道它是否是写的

但是在编译 samd 时,它显示 ora 00001: 违反了唯一约束

4

1 回答 1

0

表中的列组合存在唯一键约束。更新导致表中多于 1 条记录在此列组合中具有相同的值。确保确保列组合的唯一性,不仅在插入行时,而且在更新现有行时......

于 2019-01-31T18:38:36.707 回答