oracle存儲函數實例

来源:http://www.cnblogs.com/Jin520304/archive/2017/08/08/7307621.html
-Advertisement-
Play Games

CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_DOCTOR_LL 是存儲函數名 v_id DAY_DOCTOR_STATS.DDOS_ID%TYP... ...


CREATE OR REPLACE 
PROCEDURE      "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is

--PROC_INS_DAY_DOCTOR_LL 是存儲函數名

    v_id                                                DAY_DOCTOR_STATS.DDOS_ID%TYPE;--主鍵
    v_hospital_id                                       DAY_DOCTOR_STATS.HOSPITAL_ID%TYPE;--醫院ID
    v_doctor_id                                         DAY_DOCTOR_STATS.DOCTOR_ID%TYPE;--醫生id
    v_total_money                                              DAY_DOCTOR_STATS.TOTAL_MONEY%TYPE;--總金額
    v_anti_money                                              DAY_DOCTOR_STATS.ANTI_MONEY%TYPE;--抗菌藥金額    
    v_create_date                                         DAY_DOCTOR_STATS.CREATE_DATE%TYPE;--創建時間
    
    CURSOR CUR_HOSPITAL_DOCT IS--聲明游標  醫生數據(住院)
    SELECT DISTINCT c.DOCTOR_ID
    FROM FIN_IPR_INMAININFO a,FIN_IPB_MEDICINELIST b,DOCTOR c
    WHERE a.INPATIENT_NO= b.INPATIENT_NO
    and b.RECIPE_DOCCODE=c.EMPL_CODE
    AND to_char(a.OUT_DATE,'yyyy-mm-dd')=v_date
    and rownum<2;
    

BEGIN
     OPEN CUR_HOSPITAL_DOCT; --打開游標  
  --迴圈游標  
  LOOP  
    FETCH CUR_HOSPITAL_DOCT  INTO v_doctor_id; --取值  
    EXIT WHEN CUR_HOSPITAL_DOCT%NOTFOUND; --當沒有記錄時退出迴圈  
    
        --把住院用藥信息數據導入到一個臨時表中
        Insert into FIN_IPB_MEDICINELIST_NEW (HOSPITAL_CODE,RECIPE_NO,SEQUENCE_NO,INPATIENT_NO,TRANS_TYPE,CARD_NO,NAME,INHOS_DEPTCODE,RECIPE_DOCCODE,DRUG_CODE,DRUG_NAME,SPECS,DOSE_MODEL_CODE,UNIT_PRICE,QTY,FREQUENCY_NAME,FREQUENCY_CODE,USAGE_CODE,USE_NAME,DOSE_ONCE,DOSE_UNIT,BASE_DOSE,DAYS,PACK_QTY,PRICE_UNIT,OWN_MONEY,MEDICARE_MONEY,FEE_DATE,MO_ORDER,BROUGHT_FLAG,MEDICAL_TEAM_CODE,IS_HERBS,MANUFACTURER,ID)
select * from FIN_IPB_MEDICINELIST WHERE INPATIENT_NO in(select INPATIENT_NO from FIN_IPR_INMAININFO where to_char(OUT_DATE,'yyyy-mm-dd')=v_date);


    
    --主鍵
    select substr(sys_guid(),1,8)||'-'||substr(sys_guid(),9,4)||'-'||substr(sys_guid(),13,4)||'-'||substr(sys_guid(),17,4)||'-'||substr(sys_guid(),20,12) 
      into v_id from dual;
    
    --HOSPITAL_ID
    --醫院編碼
    select '9991' into v_hospital_id from dual;
    
    --醫生編碼
    SELECT EMPL_CODE INTO v_empl_code FROM  DOCTOR WHERE DOCTOR_ID=v_doctor_id;

    --TOTAL_MONEY
    --總金額
    SELECT nvl(sum(OWN_MONEY),0) into v_total_money 
    FROM FIN_IPB_MEDICINELIST_NEW
    WHERE DRUG_CODE IN (SELECT DRUG_CODE FROM PHA_COM_BASEINFO WHERE  manufacturer is not null )
    AND RECIPE_DOCCODE =v_empl_code;
    
    --ANTI_MONEY
    --抗菌藥金額
    select nvl(sum(OWN_MONEY),0) into v_anti_money
    from FIN_IPB_MEDICINELIST_NEW 
    where  RECIPE_DOCCODE =v_empl_code
    AND DRUG_CODE IN (SELECT DRUG_CODE FROM PHA_COM_BASEINFO WHERE  IS_KJY='1');
    
    --CREATE_DATE
    --創建時間
        select TO_DATE(v_date,'yyyy-mm-dd') into v_create_date from dual;

    --刪除當天的數據
    delete from DAY_DOCTOR_STATS 
     where CREATE_DATE=v_create_date and DOCTOR_ID=v_doctor_id;
    
    --清除住院用藥表數據
    DELETE FROM FIN_IPB_MEDICINELIST_NEW;

    --生成一條新數據(其實就是向一張表插入數據)
    insert into DAY_DOCTOR_STATS
    (DDOS_ID,HOSPITAL_ID,DOCTOR_ID,TOTAL_MONEY,ANTI_MONEY,CREATE_DATE)        
    values(v_id,v_hospital_id,v_doctor_id,v_total_money,v_anti_money,v_create_date);
  commit;
  END LOOP; 
  CLOSE CUR_HOSPITAL_DOCT;--關閉這個游標

END;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • redis redis命令: 1、字元串: set key value//設置 get key //獲取 incr key //原子增長(一次增長1)屬於原子性 incrby key 50 //增長的值自定義 一次設置和檢索多個值 mset key1 value1 key2 value2,..., ...
  • 當收到告警信息ORA-01652: unable to extend temp segment by 128 in tablespace xxxx 時,如何Troubleshooting ORA-1652這樣的問題呢? 當然一般xxx是臨時表空間,也有可能是用戶表空間。 我們先來模擬一下這個情況,在... ...
  • 前言 在網站的用戶達到一定規模後,資料庫因為負載壓力過高而成為網站的瓶頸。幸運的是目前大部分的主流資料庫都提供主從熱備功能,通過配置兩台資料庫主從關係,可以將一臺資料庫的數據更新同步到另一臺伺服器上。網站利用資料庫的這一功能,實現資料庫讀寫分離,從而改善資料庫負載壓力。如下圖所示: 應用伺服器在寫數 ...
  • 記憶體映射處理大文件 運行環境: linux 實現語言: C++ 文件大小: 大於10G 1、為什麼要用記憶體映射 a、一般讀寫大文件操作會帶來較多的磁碟IO開銷 b、數據流一次性寫入大量數據到記憶體容易達到記憶體限制 c、效率問題 2、基本概念 2.1 記憶體映射 簡單定義: 一個文件到一塊記憶體的映射。 解 ...
  • 1.資料庫的備份 備份=拷貝加管理,防止數據的丟失同時記錄用戶的操作記錄。其中最有效的備份是對IT架構進行備份。 原則: (1)資料庫要定期備份,備份的周期應當根據應用數據系統可承受的恢復時間,而且定期備份的時間應當在系統負荷最低的時候進行。對於重要的數據,要保證在極端情況下的損失都可以正常恢復。 ...
  • 1.數學函數 用來處理數值數據方面的運算,主要的數學函數有:絕對值函數,三角函數,對數函數,隨機函數。使用數學函數過程中,如果有錯誤產生,該函數會返回null值。 數學函數 功能介紹 組合鍵 abs(x) 返回x的絕對值 整數本身 pi() 返回圓周率 返回pa的值,預設顯示6位 sqrt(x) 返 ...
  • 背景 背景 MySQL/InnoDB的加鎖分析,一直是一個比較困難的話題。我在工作過程中,經常會有同事咨詢這方面的問題。同時,微博上也經常會收到MySQL鎖相關的私信,讓我幫助解決一些死鎖的問題。本文,準備就MySQL/InnoDB的加鎖問題,展開較為深入的分析與討論,主要是介紹一種思路,運用此思路 ...
  • 資料庫系列 隨著互聯網技術愈發普及,業務情景愈發豐富,各行各業更加意識到數據的價值,而資料庫正是數據發揮價值的技術根基。關於資料庫的乾貨,無論是小鮮肉還是老司機,總能在DBAplus社群解你所需。 1 MySQL 餓了麽MySQL異地多活的數據雙向複製經驗談-陳永庭 比MySQL快10倍?這可能是目 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...