Guest User

Untitled

a guest
Jan 13th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 0.96 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE P_ADD_STATION(
  2.    s_HEAD IN STATION.ID%TYPE,
  3.    s_TAIL IN STATION.ID%TYPE,
  4.    s_NAME IN STATION.NAME%TYPE
  5.    s_ID OUT STATION.ID%TYPE
  6.    ) IS
  7.    
  8.    t_ID TRANSFER.ID%TYPE;
  9. BEGIN
  10.  
  11.   IF (TRIM(p_NAME) IS NULL) THEN
  12.     RAISE_APPLICATION_ERROR(-20101, 'Name should be not null');
  13.   END IF;
  14.  
  15.   IF (s_HEAD IS NULL AND s_TAIL IS NULL) THEN
  16.     RAISE_APPLICATION_ERROR(-20102, 'New station siblings were not specified');
  17.   END IF;
  18.  
  19.   IF (s_TAIL IS NULL) THEN
  20.     RAISE_APPLICATION_ERROR(-20103, 'New station must be either after or in between existing stations');
  21.   END IF;
  22.  
  23.   s_ID := seq_STATION.NEXTVAL;
  24.   INSERT INTO STATION(ID,NAME) VALUES (s_ID, s_NAME);
  25.  
  26.   t_ID := seq_TRANSFER.NEXTVAL;
  27.     INSERT INTO TRANSFER(ID,FROM,TO) VALUES (t_ID, s_TAIL, s_ID);
  28.  
  29.   IF (s_HEAD IS NOT NULL) THEN
  30.     t_ID := seq_TRANSFER.NEXTVAL;
  31.     INSERT INTO TRANSFER(ID,FROM,TO) VALUES (t_ID, s_ID, s_HEAD);
  32.   END IF;
  33.  
  34. END P_ADD_STATION;
Advertisement
Add Comment
Please, Sign In to add comment