我们需要插入或更新表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;
/
停留在更新本身上..尚未尝试插入else块中..首先尝试更新部分.. dnt知道它是否在写入
但是在编译samd时,它显示ora 00001:违反了唯一约束
答案 0 :(得分:0)
在表中的列组合上有唯一的键约束。 该更新会导致超过1条记录在表中具有相同值的列的这个组合。 确保不仅在插入行时,而且在更新现有行时,都确保列组合的唯一性。