【问题标题】:Pl/sql function and procedurepl/sql函数和过程
【发布时间】:2019-01-31 17:01:55
【问题描述】:

我们需要 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; 
/ 

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

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

【问题讨论】:

  • 您好,欢迎来到 SO。请花一些时间阅读tour,并发布minimal reproducible example。你的问题太笼统了。这里的人们希望看到对这个问题付出一定程度的努力。 SO 不是代码编写服务。谢谢。
  • 嗨,我想帮助身体不适的人.. 我试过这样做.. 虽然我不是程序员
  • 我可以分享我尝试过的写作
  • 那么请编辑问题并插入代码,具体问题是什么。谢谢
  • 已编辑,续后。经过两天的努力,我能够纠正此代码.. bt m 无法修复 updaye 查询.. 显示一些 ora 0001 错误

标签: sql oracle plsql plsql-package


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多