PLSQL Procedure 实例1

来源:互联网 发布:淘宝卖家电话采集 编辑:程序博客网 时间:2024/06/06 13:19


CREATE TABLE 在庫  ( 製品名 VARCHAR2(20) PRIMARY KEY, 在庫数 NUMBER  );CREATE TABLE 注文  ( 注文ID NUMBER PRIMARY KEY, 製品名 VARCHAR2(20), 注文数 NUMBER  );CREATE SEQUENCE SEQ_注文ID;
INSERT INTO 在庫 VALUES    ('テレビ',10    );  INSERT INTO 在庫 VALUES    ('ラジオ',5    );  COMMIT;
CREATE OR REPLACE PROCEDURE PROC_注文受付(    P_製品名 IN 注文.製品名%TYPE,    P_注文数 IN 注文.注文数%TYPE)IS  V_在庫数 在庫.在庫数%TYPE;BEGIN  SELECT 在庫数 INTO V_在庫数 FROM 在庫 WHERE 製品名 = P_製品名 FOR UPDATE;  IF P_注文数 > V_在庫数 THEN    RAISE_APPLICATION_ERROR(-20000,'在庫不足エラー :' || P_製品名);  END IF;  UPDATE 在庫 SET 在庫数 = 在庫数 - P_注文数 WHERE 製品名 = P_製品名;  INSERT INTO 注文    (注文ID, 製品名,注文数    ) VALUES    (SEQ_注文ID.NEXTVAL, P_製品名, P_注文数    );  COMMIT;EXCEPTIONWHEN no_data_found THEN  RAISE_APPLICATION_ERROR(-20001,'誤った製品名です');END;/
beginproc_注文受付('テレビ',3);end;/




0 0
原创粉丝点击