国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

測(cè)試SQL Server業(yè)務(wù)規(guī)則鏈接方法

2024-08-31 00:49:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

有一個(gè)古老的爭(zhēng)論,是關(guān)于在哪里存儲(chǔ)應(yīng)用程序業(yè)務(wù)邏輯的:是在應(yīng)用程序本身的業(yè)務(wù)邏輯層中還是在數(shù)據(jù)庫(kù)層中。應(yīng)用程序邏輯層的絕對(duì)支持者提出,數(shù)據(jù)庫(kù)的唯一目的就是保存數(shù)據(jù),以備應(yīng)用程序所用。提倡用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)業(yè)務(wù)規(guī)則的人則堅(jiān)持認(rèn)為,業(yè)務(wù)規(guī)則最好存儲(chǔ)在數(shù)據(jù)庫(kù)中,因?yàn)閿?shù)據(jù)也存儲(chǔ)在那里,規(guī)則在那里更容易運(yùn)行。而在我看來(lái),對(duì)于存儲(chǔ)應(yīng)用程序的邏輯來(lái)說(shuō),沒(méi)有一個(gè)“最好的地方”——它真正取決于您正在解決的業(yè)務(wù)問(wèn)題。

鏈接數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程

如果您更喜歡將全部或一部分業(yè)務(wù)邏輯存儲(chǔ)在數(shù)據(jù)庫(kù)中的話,那么知道sql server中的一種被我稱作業(yè)務(wù)規(guī)則鏈接的技術(shù)是很有好處的。基本思想就是您可以在數(shù)據(jù)庫(kù)中運(yùn)行一系列的存儲(chǔ)過(guò)程,這是以在您需要的時(shí)候,不同進(jìn)程的元數(shù)據(jù)存儲(chǔ)在一個(gè)數(shù)據(jù)庫(kù)表格中為基礎(chǔ)的。這樣做的好處就是,規(guī)則都存儲(chǔ)在數(shù)據(jù)庫(kù)的程序中,并且因?yàn)榇鎯?chǔ)過(guò)程的運(yùn)行是以一個(gè)表格中的值為基礎(chǔ)的,所以您可以改變程序執(zhí)行的順序,還能夠很容易地打開(kāi)或終止業(yè)務(wù)規(guī)則。讓我們來(lái)看一個(gè)例子,這樣概念會(huì)更清晰。

業(yè)務(wù)規(guī)則鏈接實(shí)例

要用我想用的方式在數(shù)據(jù)庫(kù)中執(zhí)行業(yè)務(wù)規(guī)則,就必須定義元數(shù)據(jù)。下面這些信息將會(huì)以數(shù)據(jù)庫(kù)表格的形式被保存:存儲(chǔ)過(guò)程的名稱、業(yè)務(wù)規(guī)則運(yùn)行的順序、所運(yùn)行業(yè)務(wù)程序的類型和業(yè)務(wù)規(guī)則是否活動(dòng)等。列表a中包括了創(chuàng)建表格的腳本。

在列表b中,我在businesslogic表中加載了數(shù)據(jù)。這些數(shù)據(jù)是稍后我將用來(lái)處理業(yè)務(wù)規(guī)則的。runsequence是執(zhí)行存儲(chǔ)過(guò)程的實(shí)際順序(過(guò)程被存儲(chǔ)在logicprocedure字段中)。表格中還包含了一個(gè)指示符,用來(lái)表示業(yè)務(wù)規(guī)則是否為活動(dòng)的。存儲(chǔ)這個(gè)數(shù)據(jù)讓我能夠改變規(guī)則運(yùn)行的順序,或者在需要的時(shí)候打開(kāi)或終止規(guī)則,而無(wú)需對(duì)代碼做出更改。要向業(yè)務(wù)邏輯系統(tǒng)中添加規(guī)則也十分簡(jiǎn)單,因?yàn)樗枳龅木褪窍驍?shù)據(jù)庫(kù)中添加程序,然后在元數(shù)據(jù)表格中添加需要的數(shù)據(jù)就可以了。

在列表c中,我創(chuàng)建了業(yè)務(wù)規(guī)則程序(例子中包含的程序是非常簡(jiǎn)單的;但是,在現(xiàn)實(shí)情況中,如果需要的話,它們可以很復(fù)雜)。所有的程序中包括了相同的輸入?yún)?shù);這是業(yè)務(wù)規(guī)則鏈接的一個(gè)小小的局限性。

接下來(lái)就是處理業(yè)務(wù)規(guī)則的代碼了。在列表d中,我用一個(gè)指針在表格中迭代,該表格中的記錄都保存著元數(shù)據(jù)。當(dāng)可以用一種不同的循環(huán)結(jié)構(gòu)來(lái)完成同一個(gè)邏輯時(shí),用指針要簡(jiǎn)單一些。不管是怎么樣完成的,都需要用某種類型的迭代循環(huán)和執(zhí)行所需要的業(yè)務(wù)程序。運(yùn)行這個(gè)代碼將執(zhí)行每一個(gè)文章前面所定義的四個(gè)存儲(chǔ)過(guò)程。

在列表d中,有兩個(gè)主要引人注意的地方。第一個(gè)就是用來(lái)從表格中檢索記錄的select語(yǔ)句,所檢索的記錄中包含了處理業(yè)務(wù)規(guī)則的信息。從這個(gè)簡(jiǎn)單的查詢中,我可以為任何類型的業(yè)務(wù)處理從businesslogic表中返回行。我還能保證規(guī)則是活動(dòng)的,并且按照它們需要執(zhí)行的順序返回。

第二個(gè)就是執(zhí)行業(yè)務(wù)規(guī)則的方式。當(dāng)指針迭代時(shí),它從businesslogic表中檢索將要被執(zhí)行的存儲(chǔ)過(guò)程的名稱,然后將其儲(chǔ)存在一個(gè)邏輯變量中。execute命令允許用戶執(zhí)行存儲(chǔ)過(guò)程,即使該存儲(chǔ)過(guò)程的名稱被儲(chǔ)存在一個(gè)變量中。在這種方式下,調(diào)用存儲(chǔ)過(guò)程還使得我能夠向存儲(chǔ)過(guò)程中輸入所需的參數(shù)。

這使我回到了先前關(guān)于業(yè)務(wù)程序具有相同數(shù)量的輸入?yún)?shù)這一點(diǎn)。我能夠以一種相當(dāng)動(dòng)態(tài)的方式運(yùn)行業(yè)務(wù)程序,這取決于在程序運(yùn)行時(shí)businesslogic表中儲(chǔ)存了什么。但是,現(xiàn)在我還沒(méi)有一種方法可以動(dòng)態(tài)地向業(yè)務(wù)程序輸入?yún)?shù)。

一種簡(jiǎn)單的解決辦法就是保證所有的業(yè)務(wù)程序接受相同數(shù)量的參數(shù),不管用不用它們。這種技術(shù)保證我們始終為業(yè)務(wù)程序提供所需的參數(shù)。也有其他的方法可以實(shí)現(xiàn)這些所需參數(shù)的輸入,但是那些不是這篇文章所要討論的。

扼要重述

如果您的應(yīng)用程序在數(shù)據(jù)庫(kù)中儲(chǔ)存它的任何一個(gè)或全部業(yè)務(wù)邏輯,那么有可能它就是被我稱作業(yè)務(wù)規(guī)則鏈接的一個(gè)候選者。這種方法允許存儲(chǔ)過(guò)程在數(shù)據(jù)庫(kù)中依次運(yùn)行,并且讓您能夠在需要的時(shí)候打開(kāi)或終止這些業(yè)務(wù)規(guī)則。使用這種方法的一些潛在缺陷包括數(shù)據(jù)安全(執(zhí)行業(yè)務(wù)程序的數(shù)據(jù)儲(chǔ)存在一個(gè)表格中),和向業(yè)務(wù)邏輯程序輸入?yún)?shù)的非動(dòng)態(tài)性。如果您覺(jué)得對(duì)于您的業(yè)務(wù)問(wèn)題來(lái)說(shuō),這種方法利大于弊的話,我鼓勵(lì)您嘗試一下這種方法。

tim chapman是肯塔基州路易維爾市一家銀行的sql server數(shù)據(jù)庫(kù)管理員,他有超過(guò)7年的行業(yè)經(jīng)驗(yàn)。他還通過(guò)了微軟sql server 2000和sql server 2005的認(rèn)證。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄大仙区| 米脂县| 伊川县| 舟山市| 石棉县| 天全县| 武汉市| 霍城县| 双柏县| 石首市| 莒南县| 贡山| 翼城县| 铜山县| 江西省| 慈溪市| 康保县| 龙陵县| 阳曲县| 浠水县| 浙江省| 米林县| 广德县| 常德市| 泾川县| 精河县| 奉化市| 江都市| 乌拉特前旗| 莲花县| 正定县| 三都| 郧西县| 余干县| 丹江口市| 灵丘县| 甘南县| 彝良县| 保靖县| 苗栗县| 个旧市|