Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 1.11 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. CREATE OR REPLACE PROCEDURE UpdateUsrSub(name IN KM9185.USR.USERNAME%TYPE)
  2.   AS
  3.     insufficient_coins EXCEPTION;
  4.     coins_count PLS_INTEGER := 0;
  5.     sub_end TIMESTAMP;
  6.   BEGIN
  7.     DBMS_OUTPUT.ENABLE;
  8.    
  9.     SELECT coins, subscriptionenddate
  10.     INTO   coins_count, sub_end
  11.     FROM   km9185.usr
  12.     WHERE  username = name;
  13.  
  14.     IF (coins_count < 500) THEN
  15.       RAISE insufficient_coins;
  16.     ELSE
  17.       IF sub_end IS NULL THEN
  18.         UPDATE km9185.usr SET subscriptionenddate = systimestamp + 365.25, coins = coins - 500
  19.         WHERE username = name;
  20.       ELSE
  21.         UPDATE km9185.usr SET subscriptionenddate = sub_end + 365.25, coins = coins - 500
  22.         WHERE username = name;
  23.       END IF;
  24.     END IF;  
  25.  
  26.   EXCEPTION
  27.     WHEN insufficient_coins THEN
  28.       DBMS_OUTPUT.PUT_LINE(name || ' has insufficient funds');
  29.  
  30.   END UpdateUsrSub;
  31. /
  32.  
  33. BEGIN
  34.   UPDATEUSRSUB('me');
  35. END;
  36. /
  37. SELECT SUBSCRIPTIONENDDATE, COINS FROM KM9185.USR WHERE username = 'me';
  38.  
  39. UPDATE km9185.usr SET subscriptionenddate = null
  40. WHERE username = 'me'
  41.  
  42. UPDATE km9185.usr SET coins = 1200
  43. WHERE username = 'me'