Advertisement
RomioSul

ADD_Refer_sp

May 30th, 2021
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. CREATE OR REPLACE PROCEDURE public.ADD_Refer_sp(
  3.     p_Mode             int,
  4.     p_OrderID          int,
  5.     p_ID               int,
  6.     p_ReferID          int,
  7.     p_Login            varchar(50),
  8.     p_NewRefer         varchar(50),
  9.     p_Value            int,
  10.     p_Note             varchar(1000),
  11.     p_MD               int,
  12.    inout p_Output           varchar(20))
  13. LANGUAGE 'plpgsql'
  14. AS $BODY$
  15. BEGIN
  16.    
  17.  
  18.     DECLARE
  19.         l_ReferID      int = null;
  20.         l_TID          int = null;
  21.         l_ReferName    varchar(50);
  22.         l_now          TIMESTAMP  WITHOUT TIME ZONE;
  23.        
  24. BEGIN
  25.     set l_now = now;
  26.  
  27.     declare
  28.         exists bit = null;
  29.        
  30. begin
  31.     select exists=1 from public.Orders_tb where TID=p_Value;
  32.  
  33.     if exists = 1 then
  34.         --
  35.         -- Check Refers Reference
  36.         --
  37.         if p_ReferID is null or p_ReferID = 0 then
  38.             select l_ReferID=TID from public. DIC_Refers_tb where Name=p_NewRefer and (MD=p_MD or MD is null);
  39.             if l_ReferID is null then
  40.                 INSERT INTO public.DIC_Refers_tb(Name, MD) VALUES(p_NewRefer, @p_MD);
  41.                 select l_ReferID = CAST(scope_identity() AS int);
  42.             end if;
  43.          else
  44.             set l_ReferID = p_ReferID;
  45.         --
  46.         -- Get Refer name and value
  47.         --
  48.         select l_ReferName=Name from public.DIC_Refers_tb where TID=l_ReferID ;
  49.         --
  50.         -- Check if this is OrderRefer line (like as Params extentions)
  51.         --
  52.         set exists = 0;
  53.  
  54.         if exists = 0 then
  55.             if p_ID = 0 then
  56.                 set l_TID = 0;
  57.             else
  58.                 set l_TID = p_ID;
  59.             end if;
  60.         end if;
  61.  
  62.         if l_TID > 0 then
  63.             UPDATE public.OrderRefers_tb SET
  64.                 OrderID=p_OrderID,
  65.                 ReferID=l_ReferID,
  66.                 OrderReferID=p_Value,
  67.                 Login=p_Login,
  68.                 Note=p_Note,
  69.                 RD=l_now
  70.             WHERE TID=l_TID;
  71.  
  72.             set p_Output = 'Updated';
  73.          else
  74.             INSERT INTO public.OrderRefers_tb(
  75.                 OrderID,
  76.                 ReferID,
  77.                 OrderReferID,
  78.                 Login,
  79.                 Note,
  80.                 RD
  81.             ) VALUES (
  82.                 p_OrderID,
  83.                 l_ReferID,
  84.                 p_Value,
  85.                 p_Login,
  86.                 p_Note,
  87.                 l_now);
  88.  
  89.             select l_TID = CAST(scope_identity() AS integer);
  90.             set p_Output = 'Registered';
  91.         end if;
  92.         --
  93.         -- Add to Order Changes log
  94.         --
  95.         INSERT INTO public.OrderChanges_tb(OrderID, Login, Name, Value) VALUES
  96.             (p_OrderID, p_Login, 'Ссылки:' || l_ReferName, p_Value);
  97.  
  98.         if error != 0  then
  99.             raise'ошибка обработки';
  100.         else
  101.         set l_TID = 0;
  102.         set p_Output = 'Invalid';
  103.         end if;
  104.  
  105.     p_Output = p_Output || ':' || cast(l_TID as varchar) || ':' || cast(l_ReferID as varchar);
  106.  
  107.     if p_Mode = 0 then
  108.         SELECT l_TID, p_Output FROM
  109.             public.sysobjects where id = object_id(N'public.ADD_Refer_sp') and OBJECTPROPERTY(id, N'IsProcedure') = 1;
  110.     else
  111.         return;
  112.     end if;
  113.   end if;
  114.   end if;
  115.  end;  
  116.  end;
  117. END;
  118. $BODY$
  119.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement