存儲過程能力

一、簡介

存儲過程與用戶自定義函數類似,是放在服務器端數據庫中的子程序,是經編譯過的能執行特定功能的SQL語句集合,它將一些複雜的對數據庫表的操作集中起來,作爲一個單元來處理。

存儲過程可以接收和輸出參數,返回執行存儲過程的狀態值,還可以嵌套使用。用戶可以像使用函數一樣重複調用這些存儲過程,實現它所定義的操作。

存儲過程的優點主要有:

1)存儲過程只在創建時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。

2)當對數據庫進行復雜操作時,可將此複雜操作用存儲過程封裝起來,與數據庫提供的事務處理結合一起使用。

3)存儲過程可以重複使用,可減少數據庫開發人員的工作量。

4)安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。

二、基本框架

CREATE OR REPLACE FUNCTION name(ids"varchar") --定義存儲過程的名字及參數

       RETURNSbool AS  --返回值類型

$BODY$  --主體

DECLARE  --聲明所需要的變量

       r RECORD;

     rlt bool;

     sql "varchar";

BEGIN

SQL語句;

     return 1;

END;

$BODY$

LANGUAGE'plpgsql' VOLATILE;

三、步驟

1)需求分析。

對存儲過程中需要調整轉換的數據進行需求分析,確定其個數和具體內容。

1)劃分層次。

爲了方便最終計算,可以把存儲過程劃分層次,層次結構如下:

2)提取基礎數據(中間數據)。

劃分層次之後,結合原始數據,把計算最終數據需要的中間數據提取整理出來,放到一個數據庫表(數據閘)中,這樣,所有的最終數據的計算都從這個數據庫表中取數據。

3)劃分存儲過程個數和內容。

存儲過程的個數要適當,不要太多,太零散,也不要太少,集成度太大的話,維護起來比較困難。

可以以具體業務模塊爲維度進行劃分,以濟鋼PDM爲例,其存儲過程劃分維度如下:

①“提取中間數據”(一個存儲過程)

②“各種報表”(每種報表一個存儲過程)

2)進行概要設計。

   對前面的工作進行總結,編寫存儲過程概要設計文檔。概要設計的內容主要包括存儲過程的需求、層次結構、層次劃分、各層次間的關係、關鍵問題分析等。

3)畫系統內部數據流程圖。

存儲過程涉及的數據存儲比較複雜,寫存儲過程之前要畫好系統內部數據流程圖,可以清楚地看出數據庫內部數據的流向。

4)進行詳細設計。

根據畫好的數據流程圖,對每一個存儲過程中包含的具體內容進行詳細設計,編寫存儲過程詳細設計文檔。

詳細文檔的內容主要包括:每一個存儲過程的調用接口、名稱、傳入參數、返回值、功能及操作內容(主要包括操作數據庫的目標列名、目標表名、原列名、原列名所在的表、關鍵查詢條件)。

5)編寫代碼。

思路:(1)原始數據-->基礎數據

首先編寫由原始數據到基礎數據的存儲過程,儘量把這些操作放到一個存儲過程中,便於後期維護。

編寫時要保證數據計算存儲的正確性

2)基礎數據-->最終數據

按照詳細文檔中的對存儲過程的設計,逐個編寫計算最終數據的存儲過程。並保證數據的計算存儲正確無誤。

4)編寫上層使用文檔。

上層使用文檔的主要內容是一系列SQL語句,這些SQL語句告知上層開發人員,每一條最終數據對應數據庫中的哪一個表、哪一個列,或是經過簡單的計算就可以由數據庫中的哪一個表、哪一個列,得到最終數據。

這樣不僅可以驗證存儲過程的正確性,而且提供給上層開發人員使用存儲過程的接口。

 

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