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

總結(jié)SQL的存儲(chǔ)過程(2)_Mssql數(shù)據(jù)庫(kù)教程

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

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

SQL 存儲(chǔ)過程格式

與單個(gè) SQL 語(yǔ)句不同,大部分情況中,SQL 存儲(chǔ)過程體由一個(gè)或多個(gè)復(fù)合 SQL 語(yǔ)句組成。復(fù)合 SQL 語(yǔ)句只是由關(guān)鍵字 BEGIN 和 END 封裝的兩個(gè)或多個(gè) SQL 語(yǔ)句或 SQL PL 對(duì)象,并且以分號(hào)結(jié)尾。一條 ATOMIC 復(fù)合 SQL 語(yǔ)句可以認(rèn)為是單個(gè)的整體嗎?如果在其中產(chǎn)生任何未處理的錯(cuò)誤條件,所有執(zhí)行到該點(diǎn)的語(yǔ)句都被認(rèn)為已經(jīng)失敗,并且回滾對(duì)數(shù)據(jù)庫(kù)所做的任何更改。

當(dāng)復(fù)合語(yǔ)句用來創(chuàng)建 SQL 存儲(chǔ)過程體時(shí),它可以包含幾個(gè)邏輯部分。為了正確地開發(fā)一個(gè) SQL 存儲(chǔ)過程,使用的每個(gè)部分都必須以非常特定的順序?qū)崿F(xiàn)。每個(gè)邏輯部分必須依據(jù)的實(shí)現(xiàn)順序如下所示: <標(biāo)簽:> BEGIN

變量聲明

條件聲明

游標(biāo)聲明

條件處理程序聲明

賦值,流程控制,SQL語(yǔ)句和其它復(fù)合語(yǔ)句

END <標(biāo)簽>

正如這個(gè)格式結(jié)構(gòu)所示,可選的變量、條件和條件處理程序聲明必須在存儲(chǔ)過程邏輯(使用 SQL PL 流程控制語(yǔ)句實(shí)現(xiàn))和 SQL 語(yǔ)句之前。游標(biāo)可以在任何地方聲明,但是最好在任何條件處理程序聲明之前定義。

SQL 存儲(chǔ)過程可以由遵循此格式的一個(gè)或多個(gè)復(fù)合語(yǔ)句(或塊)組成,這些塊可以嵌套或依次執(zhí)行。為了清晰地顯示流程控制,每個(gè)塊都可以加上標(biāo)簽,從而可以包含許多 SQL 語(yǔ)句。這使進(jìn)行控制轉(zhuǎn)移語(yǔ)句引用時(shí)更加容易實(shí)現(xiàn)精確性。

清單 2 顯示一個(gè)其存儲(chǔ)過程體由幾個(gè)嵌套復(fù)合 SQL 語(yǔ)句組成的 SQL 存儲(chǔ)過程,它們遵循剛才所述的格式�?梢栽� DB2 9 SQL Reference(卷 2)中的標(biāo)題 “復(fù)合 SQL(存儲(chǔ)過程)” 下找到關(guān)于這種格式的更多信息,以及如何對(duì)每個(gè)部分進(jìn)行編碼的詳細(xì)信息和例子。

清單 2. 飽含多個(gè)子句的存儲(chǔ)過程

CREATE PROCEDURE hr.adjust_salary

(IN empid INTEGER, IN rating INTEGER, OUT msg VARCHAR(128))

DYNAMIC RESULT SETS 1

MODIFIES SQL DATA

DETERMINISTIC

LANGUAGE SQL

main: BEGIN

DECLARE SQLSTATE CHAR(5) DEFAULT '00000';

DECLARE SQLCODE INTEGER DEFAULT 0;

DECLARE not_found CONDITION FOR SQLSTATE '02000';

DECLARE c1 CURSOR WITH RETURN FOR SELECT * FROM hr.employees;

error_handler: BEGIN

DECLARE EXIT HANDLER FOR not_found

SIGNAL SQLSTATE '20000' SET MESSAGE_TEXT = 'Employee ID not found';

work: BEGIN ATOMIC

IF (rating = 1) THEN

UPDATE hr.employees SET salary = salary * 1.10

WHERE emp_id = empid;

ELSEIF (rating = 2) THEN

UPDATE hr.employees SET salary = salary * 1.05

WHERE emp_id = empid;

ELSEIF (rating = 3) THEN

UPDATE hr.employees SET salary = salary * 1.03

WHERE emp_id = empid;

ELSE

UPDATE hr.employees SET put_on_plan = 'Y'

WHERE emp_id = empid;

END IF;

SET msg = 'Updated record for employee with ID = ' || CHAR(empid);

END work;

END error_handler;

OPEN c1;

END main

調(diào)用 SQL 存儲(chǔ)過程

創(chuàng)建 SQL 存儲(chǔ)過程之后,就可以從另一個(gè) SQL 存儲(chǔ)過程或從一個(gè)客戶端應(yīng)用程序交互式地調(diào)用它(使用命令行編輯器或 CLP 等工具)。通過執(zhí)行 CALL 語(yǔ)句調(diào)用 SQL 存儲(chǔ)過程;這個(gè)語(yǔ)句的基本語(yǔ)法如下: CALL [ProcedureName] ( <[ParameterValue] | [OutputValue] | NULL> ,...)

其中:

ProcedureName 標(biāo)識(shí)指定給要調(diào)用的存儲(chǔ)過程的名稱。記住,調(diào)用存儲(chǔ)過程時(shí)必須使用存儲(chǔ)過程名,而不是專用名。

ParameterValue 標(biāo)識(shí)要傳遞給所調(diào)用的存儲(chǔ)過程的一個(gè)或多個(gè)參數(shù)值。

OutputValue 標(biāo)識(shí)一個(gè)或多個(gè)接收由所調(diào)用存儲(chǔ)過程返回的值的參數(shù)標(biāo)記或主機(jī)變量。

您可以從 CLP 調(diào)用清單 1 中所示的 SQL 存儲(chǔ)過程(通過連接到合適的數(shù)據(jù)庫(kù)和執(zhí)行類似以下的 CALL 語(yǔ)句): CALL conv_temp.f_to_c(98.6, ?)

當(dāng)這個(gè)語(yǔ)句被執(zhí)行時(shí),值 98.6 通過名稱為 TEMP_F 的輸入?yún)?shù)傳遞給存儲(chǔ)過程,問號(hào)(?)被用作一個(gè)占位符,用于將通過名稱為 TEMP_C 的輸出參數(shù)所返回的值。

可以從嵌入的 SQL 應(yīng)用程序使用如下的 CALL 語(yǔ)句來調(diào)用相同的存儲(chǔ)過程: EXEC SQL CALL conv_temp.f_to_c(98.6, :TempC)

在這種情況,TempC 是主機(jī)變量的名稱,該變量使用與 REAL DB2 數(shù)據(jù)類型兼容的特定于編程語(yǔ)言的數(shù)據(jù)類型來聲明。

效率和性能

SQL 存儲(chǔ)過程提供有效的方法將業(yè)務(wù)規(guī)則邏輯從應(yīng)用程序移動(dòng)到數(shù)據(jù)庫(kù)。通常,這種移動(dòng)帶來極大的性能提升,因?yàn)樵诜⻊?wù)器上完成處理,并且必須通過網(wǎng)絡(luò)傳輸?shù)南⒏�。使�?SQL 存儲(chǔ)過程保證在訪問數(shù)據(jù)庫(kù)的所有應(yīng)用程序中一致地實(shí)施業(yè)務(wù)規(guī)則。并且因?yàn)?SQL 存儲(chǔ)過程中的邏輯可以單獨(dú)修改,所以當(dāng)業(yè)務(wù)規(guī)則改變時(shí)不必重新編寫應(yīng)用程序。

不管是設(shè)計(jì)新的數(shù)據(jù)庫(kù)應(yīng)用程序還是只想簡(jiǎn)化日常操作,都可以尋找機(jī)會(huì)使用 SQL 存儲(chǔ)過程。如果您發(fā)現(xiàn) SQL 存儲(chǔ)過程的開發(fā)和部署在您的工作中很有用,那么您可能想成為一名 IBM 認(rèn)證的 DB2 9.5 SQL 存儲(chǔ)過程開發(fā)人員。

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

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