日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

總結SQL的存儲過程_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:如何檢測SQL Server是否有特洛伊木馬
你的SQL Server最近是否運行不正常?不,我指的不是我們肯定會遇到的通常的數(shù)據(jù)庫和操作系統(tǒng)問題。我的意思是,你是否經(jīng)歷過服務器的反應遲鈍,不穩(wěn)定的動作,繁重的網(wǎng)絡負擔,或者是服務器處理或者內(nèi)存利用率的直線上升?哦,不排除在你的系統(tǒng)中有特洛伊木馬

DB2 存儲過程:基礎知識

您在客戶端工作站上對遠程服務器和位于該服務器上的數(shù)據(jù)庫進行分類的任何時候,都存在一個簡單的 DB2 客戶端/服務器環(huán)境。在這種環(huán)境中,每次對遠程服務器上的數(shù)據(jù)庫執(zhí)行 SQL 語句時,語句本身通過網(wǎng)絡從客戶端發(fā)送到服務器上的數(shù)據(jù)庫。然后數(shù)據(jù)庫處理語句,結果通過網(wǎng)絡發(fā)送回客戶端。這意味著,對于每條被執(zhí)行的 SQL 語句,兩條消息都必須經(jīng)過網(wǎng)絡。因此,執(zhí)行大量 SQL 操作的應用程序?qū)a(chǎn)生大量網(wǎng)絡通信。

存儲過程是編寫并直接存儲在數(shù)據(jù)庫中的命名 SQL 語句組(在一些情況中,包括操作系統(tǒng)調(diào)用)。存儲過程提供下列優(yōu)勢:

減少網(wǎng)絡通信量。對于編碼在存儲過程中的 SQL 語句,消息不通過網(wǎng)絡發(fā)送。如果存儲過程設計正確,那么只有客戶端應用程序需要的數(shù)據(jù)才通過網(wǎng)絡發(fā)送。

提高服務器密集型工作的性能。因為較少數(shù)據(jù)通過網(wǎng)絡發(fā)送,并且因為處理在服務器上完成,所以復雜查詢和其它服務器密集型的工作可以更快地執(zhí)行。

業(yè)務邏輯的分離和重用。當業(yè)務規(guī)則被合并到存儲過程中時,可以僅僅根據(jù)需求調(diào)用存儲過程來多次重用邏輯。此外,保證相同的業(yè)務規(guī)則邏輯在所有使用它的應用程序中一致實施。如果業(yè)務規(guī)則改變,那么只需要改變存儲過程中的邏輯;不需要更改調(diào)用存儲過程的應用程序。

訪問服務器功能。因為存儲過程在服務器工作站上直接運行,所以它們可以利用任何額外的內(nèi)存、更快的處理器或數(shù)據(jù)庫服務器可能具備的其它資源。另外,存儲過程可以執(zhí)行許多 DB2 的管理命令,這些命令只能在服務器上運行。最后,因為存儲過程不僅僅限于執(zhí)行數(shù)據(jù)庫的活動,所以它們的優(yōu)點是可以利用已經(jīng)安裝在服務器上的任何附加軟件。

但是,有兩個需要注意的地方。第一,所有輸入數(shù)據(jù)都必須在調(diào)用時從應用程序傳遞到存儲過程。第二,存儲過程生成的結果數(shù)據(jù)集只有在存儲過程完成執(zhí)行后才返回給應用程序。換句話說,在存儲過程運行期間,應用程序和存儲過程之間不能發(fā)生任何交互。

創(chuàng)建 SQL 存儲過程

對于 Linux、Unix 和 Windows 平臺上的 DB2,可以使用三種不同類型的存儲過程:SQL 的、外部的和來源(sourced)的存儲過程。正如名稱所示,SQL 存儲過程完全由 SQL 語句和 SQL PL 對象組成。相反,外部存儲過程使用 C、C 、Java 或 COBOL 等高級編程語言構成。來源存儲過程是基于其它 SQL 或外部存儲過程的存儲過程。

存儲過程通過執(zhí)行 CREATE PROCEDURE SQL 語句創(chuàng)建。這個語句存在三種形式(每種類型的存儲過程有一種);用來創(chuàng)建 SQL 存儲過程的形式的基本語法如下: CREATE PROCEDURE [ProcedureName] ( [ParamType] [ParamName] [DataType] ,...)

CREATE PROCEDURE [ProcedureName] ( [ParamType] [ParamName] [DataType] ,...)

<SPECIFIC [SpecificName]>

<DYNAMIC RESULT SETS 0 | DYNAMIC RESULT SETS [NumResultSets]>

<CONTAINS SQL | READS SQL DATA | MODIFIES SQL DATA>

<DETERMINISTIC | NOT DETERMINISTIC>

<CALLED ON NULL INPUT>

<LANGUAGE SQL>

[ProcedureBody]

其中:

ProcedureName 標識指定給存儲過程的名稱。

ParamType 指示 ParamName 標識的參數(shù)是輸入?yún)?shù)(IN)、輸出參數(shù)(OUT)或兩者(INOUT)都是。

ParamName 標識指定給存儲過程參數(shù)的名稱。

DataType 標識存儲過程期望為 ParamName 標識的參數(shù)接收和/或發(fā)送的數(shù)據(jù)類型。

SpecificName 標識指定給存儲過程的專用名。當一個專用名被指定給存儲過程時,可以通過在特殊形式的 DROP SQL 語句(DROP SPECIFIC PROCEDURE [SpecificName])中引用專用名來刪除存儲過程。但是,如果沒有指定任何專用名,那么必須同時提供存儲過程名稱和存儲過程簽名(也就是每個存儲過程參數(shù)使用的數(shù)據(jù)類型的列表)來作為 DROP 語句的輸入。專用名不能用來調(diào)用存儲過程。

NumResultSets 指示存儲過程返回結果數(shù)據(jù)集并標識返回多少數(shù)據(jù)集。

ProcedureBody 標識調(diào)用存儲過程時要執(zhí)行的單個 SQL 語句或者一個或多個復合 SQL 語句。

注意:方括號([])中顯示的參數(shù)或選項必填寫;尖括號(<>)中顯示的參數(shù)/選項不是必填的�?梢栽� DB2 9 SQL Reference - 卷 2(參見參考資料,第 51 頁)中找到 CREATE PROCEDURE 語句的完整語法。 子句用來標識編碼在存儲過程體中的 SQL 語句的類型�?捎玫闹等缦拢�

CONTAINS SQL。存儲過程體包含既不讀取數(shù)據(jù)也不修改數(shù)據(jù)的可執(zhí)行 SQL 語句。

READS SQL DATA。存儲過程體包含讀取數(shù)據(jù)但不修改數(shù)據(jù)的可執(zhí)行 SQL 語句。

MODIFIES SQL DATA。存儲過程體包含既讀取數(shù)據(jù)也修改數(shù)據(jù)的可執(zhí)行 SQL 語句。

子句用來標識當傳遞相同(DETERMINISTIC)或不同(NOT DETERMINISTIC)的參數(shù)值時存儲過程是否始終返回相同的結果。例如,對傳遞給它的任何值增加 15% 的存儲過程將被視為 DETERMINISTIC,而使用 TIMESTAMP_ISO() 函數(shù)生成唯一 ID 的存儲過程將被視為 NOT DETERMINISTIC。

最后, 子句指示存儲過程即使在為一個或多個輸入?yún)?shù)提供空值進行調(diào)用時仍然被調(diào)用。

清單 1 顯示一個由簡單的 SQL 存儲過程構成的 CREATE PROCEDURE 語句,設計用來將溫度從華氏溫度轉換成攝氏溫度。

清單 1. 創(chuàng)建簡單的 SQL 存儲過程

CREATE PROCEDURE conv_temp.f_to_c(IN temp_f REAL, OUT temp_c REAL)

DYNAMIC RESULT SETS 0

CONTAINS SQL

DETERMINISTIC

LANGUAGE SQL

BEGIN

DECLARE temp_value REAL;

SET temp_value = (temp_f - 32);

SET temp_c = (5 * temp_value) / 9;

END

分享:解析SQL Server 2005 Express混合模式登錄設置
在VS2005裝完后,會自帶SQL Server2005 express版,為了便于管理,還需要安裝一個企業(yè)管理器,需要下載 Microsoft SQL Server Management Studio Express(下載名:SQLServer2005_SSMSEE.msi)。因為默認的是只能用windows系統(tǒng)登錄模式登錄,如果要用混合模式

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時間:2009-06-22
相關Mssql數(shù)據(jù)庫教程