Oracle数据库 ~ PL/SQL编程 ~ 子程序 ~新增数据的PROCEDURE

创建一个向数据库新增客户的过程,输入客户的编号,姓名和负责销售员的ID,以及信用额度,要求在插入数据之前,检查提供的数据是否正正确。

数据库模型

CREATE OR REPLACE PROCEDURE ADD_CUST(
  v_cno CUSTOMERS.CUST_ID%TYPE,--客户的编号
  v_cname CUSTOMERS.COMPANY%TYPE,--客户的名称
  v_cred_lim CUSTOMERS.CREDIT_LIMIT%TYPE,--客户的信息额度
  v_emplID SALESREPS.EMPL_ID%TYPE,--客户负责的销售员的ID
  p_result OUT NUMBER--操作返回的值
  )
AS
  v_custCount NUMBER;--客户的编号是否重复的变量
  v_empCount NUMBER;
BEGIN
  --查询新输入的客户编号是否有重复
  SELECT COUNT(*) into v_custCount from CUSTOMERS
  where CUST_ID=v_cno;
  IF v_custCount > 0 THEN
    p_result:=-1;
    RETURN; 
  END IF;  
  ----查询输入的销售员的编号是否重复
  SELECT COUNT(*) INTO v_empCount from SALESREPS
  WHERE EMPL_ID=v_emplID;
  IF v_empCount=0 THEN
    p_result:=-2;
    RETURN; 
  END IF;
  --插入新的数据
  INSERT INTO CUSTOMERS(CUST_ID,EMPL_ID,COMPANY,CREDIT_LIMIT)
  VALUES(v_cno,v_emplID,v_cname,v_cred_lim);
  p_result:=0;
  COMMIT;
  --抛出异常错误的处理
  EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.put_line('触发了SQL错误'||SQLERRM);
    ROLLBACK;
END;

编写程序,调用子程序

DECLARE
  p_result NUMBER;
BEGIN
  ADD_CUST(66,'SADASD',1231456,666,p_result);
  IF p_result=-1 THEN
    DBMS_OUTPUT.put_line('新增数据失败,客户的编号重复');
  ELSIF p_result=-2 THEN
    DBMS_OUTPUT.put_line('新增数据失败,销售员的编号没有查到');  
  ELSE
    DBMS_OUTPUT.put_line('新增数据成功');  
  END IF;
END;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值