oracle存儲過程如何調用寫好的函數或方法

-=-=-=-=-=-=-=-=方法被調用-=-=-=-=-=-=-=-=-=
在這裏插入圖片描述

function JudgeExist(p_budgetid in varchar2) return number is
    v_count number(2);
  begin
    select count(1)
      into v_count
      from  project_budget
     where budgetid = p_budgetid
       and isdel = 0;
    return v_count;
  end;

在這裏插入圖片描述

 procedure AddProjectBuget(p_returnValue out number,
                                p_budgetid    in varchar2, --項目預算表數據的唯一id
                                p_projectid   in varchar2, --項目id
                                p_projectname in varchar2, --項目名稱                        
                                p_expendtime  in varchar2, --支出日期
                                p_usage       in varchar2, --用途
                                p_totalbudget in number, --預算金額(元)
                                p_spendbudget in number, --支出金額(元)                                
                                p_applicant   in varchar2, --申請人
                                p_addperson   in varchar2) --創建人
  
   is
    v_count number(2);
  begin
    v_count := JudgeExist(p_budgetid);
    if v_count = 0 then
      insert into project_budget
        (projectid,
         projectname,
         createtime,
         expendtime,
         totalbudget,
         spendbudget,
         applicant,
         remainbudget,
         usage,
         addperson,
         isdel)
      values
        (p_projectid,
         p_projectname,
         sysdate,
         to_date(p_expendtime, 'yyyy-MM-dd'),
         p_totalbudget,
         p_spendbudget,
         p_applicant,
         p_totalbudget - p_spendbudget, --剩餘金額(元)=預算金額(元)-支出金額(元)
         p_usage,
         p_addperson,
         0);
      p_returnValue := 1; --如果添加成功,返回1
    else
      p_returnValue := -2; --如果添加失敗,返回-2
    end if;
  
    commit;
  exception
    when others then
      begin
        raise_application_error(-20999,
                                '程序出錯,錯誤代碼:' || sqlcode || '錯誤信息:' ||
                                sqlerrm);
        p_returnValue := -1;
        rollback;
      end;
  end;

-=-=-=-=-=-=-=-=存儲過被調用-=-=-=-=-=-=-=-=-=
在這裏插入圖片描述

 procedure TestDemo(p_returnValue out number, p_budgetid in varchar2) is
    v_count number(2);
  begin
    select count(1)
      into v_count
      from vcom_project_budget
     where budgetid = p_budgetid
       and isdel = 0;
    p_returnValue := v_count;
  end;

在這裏插入圖片描述

  /*
  || 編輯集時通項目預算表 
  || lj  2019/12/27
  */

  procedure UpdProjectBuget(p_returnValue  out varchar2,
                                p_budgetid     in varchar2, --項目預算表數據的唯一id
                                p_projectid    in varchar2, --項目id
                                p_projectname  in varchar2, --項目名稱                        
                                p_expendtime   in varchar2, --支出日期
                                p_usage        in varchar2, --用途
                                p_totalbudget  in number, --預算金額(元)
                                p_spendbudget  in number, --支出金額(元)
                                p_applicant    in varchar2, --申請人
                                p_modityperson in varchar2) --修改人 
   is
    v_count number(2);
  begin
    -- v_count := JudgeExist(p_budgetid);
    TestDemo(p_returnValue => v_count, p_budgetid => p_budgetid);
    if v_count = 0 then
      p_returnValue := -2; --如果不存在就無法修改,返回-2
      return;
    end if;
    update  project_budget
       set projectid    = p_projectid,
           projectname  = p_projectname,
           expendtime   = to_date(p_expendtime, 'yyyy-MM-dd'),
           usage        = p_usage,
           totalbudget  = p_totalbudget,
           spendbudget  = p_spendbudget,
           remainbudget = p_totalbudget - p_spendbudget, --剩餘金額(元)=預算金額(元)-支出金額(元)
           applicant    = p_applicant,
           modityperson = p_modityperson,
           modityptime  = sysdate
     where budgetid = p_budgetid;
    p_returnValue := 1; --修改成功,返回1
    commit;
  exception
    when others then
      begin
        raise_application_error(-20999,
                                '程序出錯,錯誤代碼:' || sqlcode || '錯誤信息:' ||
                                sqlerrm);
        p_returnValue := -1;
        rollback;
      end;
  end;

發佈了41 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章