⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 approve_pkg.pck

📁 这是大家学习oracle数据流的好工具的介绍
💻 PCK
字号:
create or replace package approve_pkg is

  -- Author  : LI.SR
  -- Created : 2006-3-13 15:38:40
  -- Purpose : 
  g_id Number;
  g_money Number;
  g_error Varchar2(1000);
  Procedure judge_status(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure update_status(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);                     
  Procedure judge_money(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure post_moeny( itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure reject_moeny(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure loadto (     itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure write_doc(     document_id   IN VARCHAR2
													,display_type  IN VARCHAR2
													,document      IN OUT VARCHAR2
													,document_type IN OUT VARCHAR2);
  Procedure update_all(  itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2);
  Procedure create_process(g_tb_id Number);
end approve_pkg;
/
create or replace package body approve_pkg Is
  Procedure judge_status(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is
     g_flag Number;
  Begin
     g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');
     If funcmode = 'RUN' Then
        Select max(flag) Into g_flag
          From test_table Where id = g_id;
        If g_flag = 1 Then 
           resultout := 'COMMIT';
        Else
           resultout := 'SAVE';
        End If;
     End If;
     Exception
     When Others Then
        Null;
  End judge_status;
  Procedure update_status(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is
  Begin
     g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');   
     If funcmode = 'RUN' Then  
     Update test_table Set flag = 1 Where id = g_id;    
     Commit; 
     End If;
     resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;   
     Return;  
     Exception
     When Others Then
       Null;
  End update_status;
  Procedure judge_money( itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is     
  Begin
        g_money := wf_engine.GetItemAttrNumber(itemtype,itemkey,'BXJE');
        If funcmode = 'RUN' Then
            If g_money >= 1000 Then 
               resultout := 'DAYU';
            Elsif g_money < 1000 Then
               resultout := 'XIAOYU';
            Else
               resultout := Null;
            End If;
        End If;
        Commit;
     Exception
     When Others Then
       dbms_output.put_line(Sqlerrm);
  End judge_money;   
  Procedure post_moeny(  itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is                  
  Begin
     g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');     
     If funcmode = 'RUN' Then
         Update test_table Set appro_flag = 1 Where id = g_id;
         Commit;
     End If;
     resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;   
     Exception
     When Others Then
       Null;
  End post_moeny;
  Procedure reject_moeny(itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is
  Begin
     g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');     
     If funcmode = 'RUN' Then
         Update test_table Set flag = 0,appro_flag =0 Where id = g_id;
         Commit;
     End If;
     resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;   
     Exception
     When Others Then
       Null;
  End reject_moeny;
  Procedure loadto      (itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is
  Begin
     g_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'ID');     
     If funcmode = 'RUN' Then
         Update test_table Set post_flag = 1 Where id = g_id;
         Commit;
     End If;
     resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;   
     Exception
     When Others Then
       Null;
  End loadto;
  Procedure write_doc(     document_id   IN VARCHAR2
													,display_type  IN VARCHAR2
													,document      IN OUT VARCHAR2
													,document_type IN OUT VARCHAR2)
  Is
  Begin
       If display_type = 'text/html' Then 
          document := '<table width=400 border=1 bordercolor=red>';
          For iLoop In (Select * From test_table /*Where id = document_id*/) Loop
              document := document || '<tr>';
              document := document || '<td>';
              document := document || iLoop.Id;
              document := document || '</td>';
              document := document || '<td>';
              document := document || iLoop.Money;
              document := document || '</td>';
              document := document || '</tr>';
          End Loop;
          document := document || '</table>';
       End If;
       document_type := display_type;
  End write_doc;
  Procedure update_all(  itemtype  IN VARCHAR2
											  ,itemkey   IN VARCHAR2
											  ,actid     IN NUMBER
											  ,funcmode  IN VARCHAR2
											  ,resultout OUT VARCHAR2)
  Is
     g_post_id Number;
  Begin
     If funcmode = 'RUN' Then
         Select wf_s.nextval Into g_post_id From dual;
         Update test_table e Set e.post_flag = g_post_id;
         Commit;
     End If;
     resultout := wf_engine.eng_completed || ':' || wf_engine.eng_null ;   
  End update_all;
  Procedure create_process(g_tb_id Number)
  Is 
     g_item_type Varchar2(20) := 'APPROVE';
     g_item_key  Varchar2(20);
     g_process   Varchar2(20) := 'FYBX';
     g_send_name Varchar2(20);
     g_appr_name Varchar2(20);
     g_textname   wf_engine.NameTabTyp;
     g_textval    wf_engine.TextTabTyp;
     g_numname    wf_engine.NameTabTyp;
     g_numval     wf_engine.NumTabTyp;
  Begin
     g_id := g_tb_id;
     If g_id Is Null Then
        g_id := 1;
     End If;
     Select wf_s.Nextval Into g_item_key From dual ;
     g_item_key := g_item_type || g_item_key;
     Select max(user_name),max(to_user_name),max(money) 
        Into g_send_name,g_appr_name,g_money
       From test_table Where id = g_id;
     g_textname(1) := 'BXR';
     g_textname(2) := 'SPR';
     g_textname(3) := 'URL';
     g_textname(4) := 'FORM';
     
     g_textval(1)  := g_send_name;
     g_textval(2)  := g_appr_name;
     g_textval(3)  := 'http://www.google.com/intl/zh-cn';
     g_textval(4)  := 'FND_FNDCPMCP_SYS';
     
     g_numname(1) := 'BXJE';
     g_numname(2) := 'ID';
     g_numval(1)  := g_money;
     g_numval(2)  := g_id;
     
     wf_engine.CreateProcess(g_item_type,g_item_key,g_process);
     wf_engine.SetItemAttrTextArray(g_item_type,g_item_key,g_textname,g_textval);
     wf_engine.SetItemAttrNumberArray(g_item_type,g_item_key,g_numname,g_numval);     
     wf_engine.SetItemAttrDocument(g_item_type,g_item_key,'DOC','PLSQL:approve_pkg.write_doc/' || g_id);
     wf_engine.SetItemAttrDate(g_item_type,g_item_key,'DATE',Sysdate);
     wf_engine.StartProcess(g_item_type,g_item_key);
     Commit;
     Exception 
     When Others Then
        dbms_output.put_line(Sqlerrm);
  End create_process;  
end approve_pkg;
/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -