版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、知識點概要1、 智能網(wǎng)絡(luò)監(jiān)控系統(tǒng):現(xiàn)在流行的遠程監(jiān)控系統(tǒng)現(xiàn)場數(shù)據(jù)采集與遠程監(jiān)控并存,一般是采用現(xiàn)場總線技術(shù)將分布于各個設(shè)備的傳感器、監(jiān)控設(shè)備等連接起來,這樣就從分立單元階段進入了集成單元階段,然后各個管理站點的服務(wù)再用局域網(wǎng)連接起來,這樣就形成了一個監(jiān)控現(xiàn)場的監(jiān)控網(wǎng)絡(luò)。然后通過Internet、GPRS 或者架設(shè)專線與遠端的監(jiān)控中心聯(lián)網(wǎng),從而實現(xiàn)遠程監(jiān)控系統(tǒng)。 實時監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖_ 數(shù)據(jù)庫服務(wù)器安裝Windows 2000 ADV Server 網(wǎng)絡(luò)操作系統(tǒng)、SQL Server2000 關(guān)系型數(shù)據(jù)庫軟件,存儲檢測信息及加工信息等。_ 數(shù)據(jù)交換中心數(shù)據(jù)交換中心是一臺裝有數(shù)據(jù)代理應(yīng)用軟件的計
2、算機,能接收現(xiàn)場檢測信息并存儲于數(shù)據(jù)庫,能轉(zhuǎn)發(fā)檢測中心發(fā)出的主動檢測信號,是通信子系統(tǒng)的核心之一。_ 控制臺控制臺是一臺裝有管理軟件的計算機,能顯示被監(jiān)控設(shè)備的運行情況,能對遠端的數(shù)據(jù)采集器發(fā)送控制信號。控制臺與數(shù)據(jù)交換中心可以是同一臺計算機。_ 遠地數(shù)據(jù)采集器遠地數(shù)據(jù)采集器在檢測現(xiàn)場采集實時數(shù)據(jù),通過GPRS、Internet 把數(shù)據(jù)送至檢測中心,接收來自檢測中心的控制信號進行相應(yīng)操作。2、 智能網(wǎng)絡(luò)監(jiān)控系統(tǒng)常用技術(shù):基于Internet通信技術(shù)、GPRS 通信技術(shù)、數(shù)據(jù)庫物理模型優(yōu)化設(shè)計、通信加密技術(shù)、終端數(shù)據(jù)抗干擾采集技術(shù)、現(xiàn)場采集數(shù)據(jù)的及時響應(yīng)處理技術(shù),開發(fā)了一個C/S 結(jié)構(gòu)的遠程實時
3、監(jiān)控系。原理:系統(tǒng)由遠程數(shù)據(jù)采集子系統(tǒng)、通信子系統(tǒng)、監(jiān)測中心子系統(tǒng)三部分組成。數(shù)據(jù)采集子系統(tǒng)通過分布式數(shù)據(jù)采集器采集遠程監(jiān)測點的檢測信息;通信子系統(tǒng)通過Internet、GPRS 把檢測信息送至監(jiān)測中心子系統(tǒng);監(jiān)測中心子系統(tǒng)接收檢測信息,并將檢測信息保存到數(shù)據(jù)庫,并分析統(tǒng)計設(shè)備運行狀態(tài),為上層決策提供基礎(chǔ)數(shù)據(jù)。同時,監(jiān)測中心子系統(tǒng)能主動發(fā)送控制信號(召喚),通過通信子系統(tǒng)把控制信號傳送至檢測現(xiàn)場指揮遠端數(shù)據(jù)采集子系統(tǒng)采集設(shè)備信息。3、網(wǎng)絡(luò)傳感器技術(shù):將網(wǎng)絡(luò)接口芯片與智能傳感器集成起來,并把通信協(xié)議固化到智能傳感器的ROM 中,產(chǎn)生了網(wǎng)絡(luò)傳感器。網(wǎng)絡(luò)傳感器繼承了智能傳感器的全部功能,并且能夠和計
4、算機網(wǎng)絡(luò)進行通信,因而在現(xiàn)場總線控制系統(tǒng)中得到了廣泛的應(yīng)用成為現(xiàn)場級數(shù)字化傳感器。4、典型的基于GPRS、Internet的監(jiān)測系統(tǒng)的組成:軟件組織結(jié)構(gòu)圖_ 監(jiān)控軟件對整個系統(tǒng)的運行的基礎(chǔ)數(shù)據(jù)進行設(shè)置,從數(shù)據(jù)庫讀入預(yù)處理的現(xiàn)場監(jiān)測信息并加工處理,把處理結(jié)果顯示給監(jiān)控人員,監(jiān)控人員在此可以發(fā)出主動控制指令。采用C/S軟件體系結(jié)構(gòu)。_ 數(shù)據(jù)代理讀入來自Internet 的現(xiàn)場監(jiān)測信息并經(jīng)預(yù)處理后存入數(shù)據(jù)庫,從數(shù)據(jù)庫讀監(jiān)控人員發(fā)出的主動控制指令并通過Internet 傳送至于現(xiàn)場檢測點。采用C/S軟件體系結(jié)構(gòu)。_ 數(shù)據(jù)采集采集檢測現(xiàn)場設(shè)備運行信息,控制GPRG DTU 發(fā)送信息、接收指令。面向過程的
5、編程方式實現(xiàn)。GPRS DTU 全稱GPRS 數(shù)據(jù)傳輸單元,在國內(nèi)目前實際上對GPRS DTU 具有更加明確的約定:是專門用于將串口數(shù)據(jù)通過GPRS 網(wǎng)絡(luò)進行傳送的GPRS 無線設(shè)備)。5、C/S結(jié)構(gòu)系統(tǒng)常用的開發(fā)工具:Client/Server(客戶/服務(wù)器模式,簡稱C/S模式)和Browser/Server模式(瀏覽器/服務(wù)器模式,簡稱B/S 模式)。流行的編制C/S 體系結(jié)構(gòu)軟件的開發(fā)工具有Visual Basic、Delphi、PowerBuilder 等等。6、常見的Web服務(wù)器軟件:Microsoft IIS、IBM WebSphere、BEA WebLogic、IPlanet A
6、pplication Server、Oracle IAS、Apache、Tomcat7、B/S結(jié)構(gòu)系統(tǒng)常用的技術(shù):流行的編制B/S 體系結(jié)構(gòu)軟件的開發(fā)工具有ASP 、java 、PHP、asp .NET8、C/S與B/S的比較: 1.C/S模式的優(yōu)勢:交互性強:在C/S 模式中,客戶端有一套完整的應(yīng)用程序,在出錯提示、在線幫助等方面都有強大的功能,并且可以在子程序間自由切換;更安全的存取模式:由于C/S 模式是配對的點對點的結(jié)構(gòu)模式,在C/S 模式的平臺上可采用適用于局域網(wǎng)、安全性比較好的網(wǎng)絡(luò)協(xié)議,安全性可以得到較好的保證。 2. B/S模式的優(yōu)勢:B/S是有計算技術(shù)以來最穩(wěn)定的技術(shù)平臺;B/
7、S本質(zhì)上是一種客戶機技術(shù):Internet原則上取消了所有在客戶機上的維護工作;B/S提供異種機、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實的開放性基礎(chǔ)。9、概述單片機前向通道:當(dāng)將單片機用作測控系統(tǒng)時,前向通道是指被測信號的輸入通道,對被測對象的信號的拾取其主要任務(wù)就是最忠實地反映被測對象的真實狀態(tài),它包括實時性與測量精度。同時使這些測量信號能滿足計算機輸入接口的電平要求。 單片機控制系統(tǒng)前向通道圖示10、 概述傳感器接口通道:單片機應(yīng)用系統(tǒng)中的前向通道體現(xiàn)了被測對象與系統(tǒng)相互聯(lián)系的信號輸入通道,原始參數(shù)輸入通道。由于在該通道中主要是傳感器與傳感器有關(guān)的信號調(diào)節(jié)、變換電路,故也可稱為
8、傳感器接口通道。11、傳感器及傳感器的作用: 是一種能把化學(xué)量和物理量轉(zhuǎn)變成便于利用的電信號的器件,根據(jù)傳感器工作原理,可分為物理傳感器和化學(xué)傳感器二大類。將被測信號量的微小變化轉(zhuǎn)成電信號,是實現(xiàn)自動檢測和自動控制的首要環(huán)節(jié)。12、 采樣保持器: 采樣器是一種開關(guān)電路或裝置,它在固定時間點上取出被處理信號的值。作用:采樣保持器則把這個信號值放大后存儲起來,保持一段時間,以供模數(shù)轉(zhuǎn)換器轉(zhuǎn)換,直到下一個采樣時間再取出一個模擬信號值來代替原來的值。在模數(shù)轉(zhuǎn)換器工作期間采樣保持器一直保持著轉(zhuǎn)換開始時的輸入值,因而能抑制由放大器干擾帶來的轉(zhuǎn)換噪聲,降低模數(shù)轉(zhuǎn)換器的孔徑時間,提高模數(shù)轉(zhuǎn)換器的精確度和消除轉(zhuǎn)
9、換時間的不準確性。13、 后向通道的概念及后向通道的作用: 后向通道是計算機實現(xiàn)控制運算處理后,對控制對象的輸出通道接口。功率驅(qū)動:將單片機輸出信號進行功率放大,以滿足伺服驅(qū)動的功率要求;干擾防治:主要防治伺服驅(qū)動系統(tǒng)通過信號通道電源以及空間電磁場對計算機系統(tǒng)的干擾。通常采用信號隔離電源隔離和對功率開關(guān)實現(xiàn)過零切換等方法進行干擾防治;數(shù)/模轉(zhuǎn)換:對于二進制輸出的數(shù)字量采用D/A變換器;對于頻率量輸出則可以采用F/V(頻率/電壓)轉(zhuǎn)換器變換成模擬量。14、 概述單片機應(yīng)用系統(tǒng)的各種抗干擾設(shè)計: 單片機的抗干擾設(shè)計通常分為硬件抗干擾設(shè)計和軟件抗干擾設(shè)計兩部分。 單片機應(yīng)用系統(tǒng)的硬件抗干擾設(shè)計:要選
10、擇抗干擾性能強的CPU 外和考慮外圍電路的抗干擾設(shè)計。1.供電系統(tǒng)的抗干擾設(shè)計:使用交流穩(wěn)壓器、變壓器初次級用屏蔽層隔離、低通濾波器可濾去干擾帶來的高次諧波、整個系統(tǒng)采用分立式供電方式,分別對各部分進行供電、采用開關(guān)電源并提供足夠的功率余量、SRAM(靜態(tài)隨機存取存儲器)掉電保護;2.過程通道的抗干擾設(shè)計:光電耦合隔離、雙絞線傳輸、長線傳輸?shù)淖杩蛊ヅ洌?.印制電路板的抗干擾設(shè)計:印制電路板大小要適中、器件布置時把相關(guān)的器件就近放置,易產(chǎn)生噪聲的電路應(yīng)盡量遠離主機電路,發(fā)熱量大的器件應(yīng)考慮散熱問題,I/O 驅(qū)動器件盡量靠近印制板邊上放置。閉置的IC 管腳不要懸空,元器件腳避免相互平行,以減少寄生
11、耦合。如有可能,盡量使用貼片元件、布線時電路之間的連接應(yīng)盡量短、接地時交流地與信號地不能共用、在印制電路板的關(guān)鍵部位加去耦電容提供系統(tǒng)的抗干擾能力。4.其它的抗干擾設(shè)計:將易干擾的電路或設(shè)備(或輻射源)等屏蔽起來、系統(tǒng)可以浮置(如信號地不接機殼或大地)來阻斷干擾電流的通路,設(shè)備內(nèi)部具有輻射能力的電路要獨立遠置,以減少對其他電路的影響、把整個CPU 控制電路,采用金屬機箱,做好接地接地電阻不小于4歐姆;保證沒有空間干擾的串入、所有機箱對外的接口,使用光電隔離、420mA 電流環(huán)路,或者平衡信號傳輸,沒有公共的信號地,保證沒有干擾由控制線路串入、盡量采用無觸點的固態(tài)繼電器、控制設(shè)備盡量遠離執(zhí)行機構(gòu)
12、。 單片機應(yīng)用系統(tǒng)的軟件抗干擾設(shè)計:1.超值濾波法:若單片機對輸入信號相鄰兩次采樣的差值小于等于最大偏差值,則本次采樣值視為有效,并加以保存;2.平均值法:對于一個數(shù)據(jù)連續(xù)采樣幾次, 剔除個別錯誤數(shù)據(jù),計算平均值,以平均值作為采樣的結(jié)果;3.中值法:根據(jù)干擾造成采樣數(shù)據(jù)偏大或偏小的情況,對1 個采樣點連續(xù)采集多個信號,進行比較,取中值作為采樣結(jié)果;4.比較舍去法:從每個采樣點的n 個連續(xù)采樣數(shù)據(jù)中,按確定的舍去方法來剔除偏差數(shù)據(jù);5.RAM 數(shù)據(jù)冗余:即將欲保護的數(shù)據(jù)寫入RAM中的不同區(qū)域;6.軟件冗余:提供足夠的冗余信息和算法程序,使系統(tǒng)在實際運行時能夠及時發(fā)現(xiàn)程序設(shè)計錯誤,采取補救措施;7
13、.指令冗余:在關(guān)鍵的地方人為地插入一些單字節(jié)指令(NOP),或?qū)⒂行巫止?jié)指令和重要的控制指令重復(fù)書寫;8.軟件陷阱的設(shè)計:軟件陷阱是指用來將捕獲的跑飛程序引向復(fù)位入口或錯誤處理程序入口地址的幾條指令NOPNOPLJMP 0000H(或LJMP ERROR, ERROR為錯誤處理程序的入口標號)為防止干擾導(dǎo)致未使用的中斷被異常開放,對于未使用的中斷服務(wù)程序則可以這樣:NOPNOPPUSH 00HPUSH 00HRETI9.看門狗”技術(shù):通過不斷檢測程序循環(huán)運行時間,若發(fā)現(xiàn)程序循環(huán)時間超過最大循環(huán)運行時間,則認為系統(tǒng)陷入“死循環(huán)”,需進行出錯處理。在不影響程序功能的情況下,還可以利用單片機的“待
14、機”工作方式來實現(xiàn)抗干擾。15、了解單片機應(yīng)用系統(tǒng)的軟硬件抗干擾設(shè)計都有哪些:如上所述16、單片機控制系統(tǒng)的典型抗干擾供電系統(tǒng): 供電系統(tǒng)的抗干擾設(shè)計:使用交流穩(wěn)壓器、變壓器初次級用屏蔽層隔離、低通濾波器可濾去干擾帶來的高次諧波、整個系統(tǒng)采用分立式供電方式,分別對各部分進行供電、采用開關(guān)電源并提供足夠的功率余量、SRAM(靜態(tài)隨機存取存儲器)掉電保護。17、主流數(shù)據(jù)庫有哪些:Sybase,Oracle,Informix,SQL Server,DB2。18、概述主鍵約束: 表中經(jīng)常有一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵(PRIMARY KEY,PK),一個
15、表只能有一個PK 約束,而且PK約束中的列不能接受空值,如果PK 約束定義在不止一列上,則一列中的值可以重復(fù),但PK 約束定義中的所有列的組合的值必須唯一。19、 概述主鍵與外鍵的關(guān)系: 外鍵:通過將保存表中主鍵值的一列或多列添加到另一個表中,可創(chuàng)建兩個表之間的鏈接。這個列就成為第二個表的外鍵。FOREIGN KEY 約束并不僅僅只可以與另一表的PRIMARY KEY 約束相鏈接,它還可以定義為引用另一表的UNIQUE 約束。FOREIGN KEY 約束不允許空值,但是,如果任何組合FOREIGN KEY 約束的列包含空值,則將跳過FOREIGN KEY 約束的校驗。FOREIGN KEY 約
16、束的主要目的是控制存儲在外鍵表中的數(shù)據(jù),其次它還可以控制對主鍵表中數(shù)據(jù)的修改。FOREIGN KEY 約束的主要目的是控制存儲在外鍵表中的數(shù)據(jù),其次它還可以控制對主鍵表中數(shù)據(jù)的修改,確保引用完整性。20、存儲過程:在使用SQL Server 2000 創(chuàng)建應(yīng)用程序時,程序在SQL Server中存儲為存儲過程,并創(chuàng)建執(zhí)行存儲過程并處理結(jié)果的應(yīng)用程序。存儲過程不返回取代其名稱的值,也不能直接用在表達式中。存儲過程定義包含兩個主要組成部分:過程名稱及其參數(shù)的說明,以及過程的主體(其中包含執(zhí)行過程操作的Transact-SQL 語句)。 創(chuàng)建存儲過程時,應(yīng)指定: 所有輸入?yún)?shù)和向調(diào)用過程或批處理返回
17、的輸出參數(shù)。 執(zhí)行數(shù)據(jù)庫操作(包括調(diào)用其它過程)的編程語句。 返回至調(diào)用過程或批處理以表明成功或失?。ㄒ约笆≡颍┑臓顟B(tài)值。 不要創(chuàng)建以sp_為前綴的存儲過程,系統(tǒng)存儲過程在master 數(shù)據(jù)庫中創(chuàng)建并存儲,帶有sp_前綴。#表示本地臨時存儲過程,#表示全局臨時存儲過程。SQL Server 關(guān)閉后,這些過程將不再存在。存儲過程也可通過OUTPUT參數(shù)將值返回至調(diào)用程序。一個存儲過程可有多達2100 個參數(shù),每個參數(shù)都有名稱、數(shù)據(jù)類型、方向和默認值。存儲過程名稱必須以單個字符開頭。 如果存儲過程my_proc 應(yīng)有三個命名為first、second 和third 的參數(shù),則可將傳遞至該存儲過
18、程的值賦予參數(shù)名稱,如: EXECUTE my_proc second=2, first=1, third=3 或者按照位置傳遞,而不命名參數(shù)名稱: EXECUTE my_proc 1, 2, 3存儲過程中的參數(shù)要定義數(shù)據(jù)類型,數(shù)據(jù)類型cursor 只能用作OUTPUT 參數(shù)。當(dāng)調(diào)用存儲過程的程序執(zhí)行該存儲過程時,所有過程參數(shù)都可接收輸入值。 示例:下列存儲過程get_sales_for_title使用了輸入?yún)?shù)。該存儲過程中的title 參數(shù)接收調(diào)用程序所指定的書名作為輸入值。SELECT 語句使用此title 參數(shù)獲得正確的ytd_sales 值并顯示該值。存儲過程中參數(shù)的最大數(shù)目為210
19、0。根據(jù)可用內(nèi)存的不同,存儲過程的最大大小可達128MB。CREATE PROCEDURE get_sales_for_titletitle varchar(80) - This is the input parameter.AS- Get the sales for the specified title.SELECT "YTD_SALES" = ytd_salesFROM titlesWHERE title = titleRETURNGO 執(zhí)行該存儲過程時,如果未指定其它值,則使用默認值。可以指定NULL 作為參數(shù)的默認值,并在未提供參數(shù)值而執(zhí)行存儲過程的情況下,使存儲
20、過程返回一條自定義消息。如果默認值是包含嵌入空格或標點符號的字符串,或者以數(shù)字開頭(例如,6xxx),那么該默認值必須用直的單引號引起來。下例顯示在未提供title 參數(shù)值的情況下執(zhí)行存儲過程時,get_sales_for_title 過程將進行特殊處理。CREATE PROCEDURE get_sales_for_titletitle varchar(80) = NULL, - NULL default valueytd_sales int OUTPUTAS- Validate the title parameter.IF title IS NULLBEGINPRINT 'ERROR
21、: You must specify a title value.'RETURNEND- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = titleRETURNGO執(zhí)行程序示范及結(jié)果:EXECUTE my_proc - No parameters suppliedGO顯示:NULL 2 3EXECUTE my_proc 10, 20, 30 - All parameters s
22、uppliedGO顯示:10 20 30EXECUTE my_proc second = 500 - Only second parameter supplied by nameGO顯示:NULL 500 3EXECUTE my_proc 40, third = 50 - Only first and third parametersGO - are supplied.顯示:40 2 50假如:Mary 擁有表marytab,如果她希望其他用戶能夠執(zhí)行使用該表的存儲過程,必須在該表用于上述某一條語句時對其表名進行限定。此規(guī)則是必需的,因為運行存儲過程時將解析對象的名稱。如果未限定marytab
23、,而John 試圖執(zhí)行該過程,SQL Server 將查找John 所擁有的名為marytab的表。WITH ENCRYPTION 用于加密,所有人都無法查看存儲過程定義。A. 創(chuàng)建使用參數(shù)的存儲過程下例創(chuàng)建一個在pubs 數(shù)據(jù)庫中很有用的存儲過程。給出一個作者的姓和名,該存儲過程將顯示該作者的每本書的標題和出版商。CREATE PROC au_info lastname varchar(40), firstname varchar(20)ASSELECT au_lname, au_fname, title, pub_nameFROM authors INNER JOIN titleautho
24、r ON authors.au_id = titleauthor.au_idJOIN titles ON titleauthor.title_id = titles.title_idJOIN publishers ON titles.pub_id = publishers.pub_idWHERE au_fname = firstnameAND au_lname = lastnameGO將出現(xiàn)一條說明該命令未返回任何數(shù)據(jù)也未返回任何行的消息,這表示已創(chuàng)建該存儲過程?,F(xiàn)在執(zhí)行au_info 存儲過程:EXECUTE au_info Ringer, AnneGO下面是結(jié)果集:au_lname au_
25、fname title pub_name- - - -Ringer Anne The Gourmet Microwave Binnet & HardleyRinger Anne Is Anger the Enemy? New Moon Books(2 row(s) affected)B. 創(chuàng)建使用參數(shù)默認值的存儲過程下例創(chuàng)建一個存儲過程pub_info2,該存儲過程顯示作為參數(shù)給出的出版商所出版的某本書的作者姓名。如果未提供出版商的名稱,該存儲過程將顯示由Algodata Infosystems出版的書籍的作者。CREATE PROC pub_info2 pubname varchar
26、(40) = 'Algodata Infosystems'ASSELECT au_lname, au_fname, pub_nameFROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_idJOIN titles t ON ta.title_id = t.title_idJOIN publishers p ON t.pub_id = p.pub_idWHERE pubname = p.pub_name執(zhí)行未指定參數(shù)的 pub_info2:EXECUTE pub_info2GO下面是結(jié)果集:au_lname au_
27、fname pub_name- - -Green Marjorie Algodata InfosystemsBennet Abraham Algodata InfosystemsO'Leary Michael Algodata InfosystemsMacFeather Stearns Algodata InfosystemsStraight Dean Algodata InfosystemsCarson Cheryl Algodata InfosystemsDull Ann Algodata InfosystemsHunter Sheryl Algodata InfosystemsL
28、ocksley Charlene Algodata Infosystems(9 row(s) affected)C. 執(zhí)行用顯式值替代參數(shù)默認值的存儲過程在下例中,存儲過程showind2 的table 參數(shù)默認值是titles。CREATE PROC showind2 table varchar(30) = 'titles'ASSELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjects ON sys
29、objects.id = sysindexes.idWHERE = table列標題(例如,TABLE_NAME)可使結(jié)果更具可讀性。下面是該存儲過程顯示的authors 表的情況:EXECUTE showind2 authorsGOTABLE_NAME INDEX_NAME INDEX_ID- - -authors UPKCL_auidind 1authors aunmind 2(2 row(s) affected)如果用戶未提供值,則SQL Server 將使用默認表titles:EXECUTE showind2GO下面是結(jié)果集:TABLE_NAME IND
30、EX_NAME INDEX_ID- - -titles UPKCL_titleidind 1titles titleind 2(2 row(s) affected)D. 使用參數(shù)默認值 NULL 創(chuàng)建存儲過程參數(shù)默認值可以是NULL 值。在這種情況下,如果未提供參數(shù),則SQL Server 將根據(jù)存儲過程的其它語句執(zhí)行存儲過程。不會顯示錯誤信息。過程定義還可指定當(dāng)不給出參數(shù)時要采取的其它某種措施。例如:CREATE PROC showind3 table varchar(30) = NULLAS IF table IS NULLPRINT 'Give a table name'
31、ELSESELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjectsON sysobjects.id = sysindexes.idWHERE = tableE. 使用包含通配符的參數(shù)默認值創(chuàng)建存儲過程如果存儲過程將參數(shù)用于LIKE 關(guān)鍵字,那么默認值可包括通配符(%、_、和)。例如,可將showind修改為當(dāng)不提供參數(shù)時顯示有關(guān)系統(tǒng)表的信息:CREATE PROC showind4 t
32、able varchar(30) = 'sys%'AS SELECT TABLE_NAME = ,INDEX_NAME = , INDEX_ID = indidFROM sysindexes INNER JOIN sysobjectsON sysobjects.id = sysindexes.idWHERE LIKE table在存儲過程au_info 的下列變化形式中,兩個參數(shù)都有帶通配符的默認值:CREATE PROC au_info2 lastname varchar(30) =
33、'D%',firstname varchar(18) = '%'ASSELECT au_lname, au_fname, title, pub_nameFROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_idJOIN titles ON titleauthor.title_id = titles.title_idJOIN publishers ON titles.pub_id = publishers.pub_idWHERE au_fname LIKE firstnameAN
34、D au_lname LIKE lastname如果執(zhí)行au_info2 時不指定參數(shù),將顯示姓以字母D 開頭的所有作者:EXECUTE au_info2GO下面是結(jié)果集:au_lname au_fname title pub_name- - - -Dull Ann Secrets of Silicon Val Algodata Infosystemsdel Castillo Innes Silicon Val Gastrono Binnet & HardleyDeFrance Michel The Gourmet Microwave Binnet & Hardley(3 ro
35、w(s) affected)從存儲過程中返回數(shù)據(jù):1. 使用OUTPUT參數(shù)返回數(shù)據(jù)示例顯示有一個輸入?yún)?shù)和一個輸出參數(shù)的存儲過程。存儲過程中的第一個參數(shù)title將接收由調(diào)用程序指定的輸入值,而第二個參數(shù)ytd_sales 將向調(diào)用程序返回該值。SELECT 語句使用title 參數(shù)以獲得正確的ytd_sales 值,并將該值賦予ytd_sales 輸出參數(shù)。CREATE PROCEDURE get_sales_for_titletitle varchar(80), - This is the input parameter.ytd_sales int OUTPUT - This is th
36、e output parameter.AS- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = titleRETURNGO下列程序用輸入?yún)?shù)值執(zhí)行存儲過程,并將存儲過程的輸出值保存到調(diào)用程序的局部變量ytd_sales_for_title 中。- Declare the variable to receive the output value of the procedure.DECLA
37、RE ytd_sales_for_title int- Execute the procedure with a title_id value- and save the output value in a variable.EXECUTE get_sales_for_title"Sushi, Anyone?", ytd_sales = ytd_sales_for_title OUTPUT- Display the value returned by the procedure.PRINT 'Sales for "Sushi, Anyone?":
38、 ' + convert(varchar(6),ytd_sales_for_title)GOSales for "Sushi, Anyone?": 4095使用返回代碼返回數(shù)據(jù)存儲過程可返回一個稱為返回代碼的整型值,以表明過程的執(zhí)行狀態(tài)。使用RETURN 語句指定存儲過程的返回代碼。與OUTPUT 參數(shù)一樣,執(zhí)行存儲過程時必須將返回代碼保存到變量中,以便在調(diào)用程序中使用返回代碼值。例如,使用int 數(shù)據(jù)類型的賦值變量result 保存存儲過程my_proc 的返回代碼:DECLARE result intEXECUTE result = my_proc返回代碼通常用
39、在存儲過程內(nèi)的控制流塊中,以便為每種可能的錯誤狀況設(shè)置返回代碼值??稍赥ransact-SQL 語句后使用ERROR 函數(shù),以檢測是否在該語句的執(zhí)行期間有錯誤發(fā)生。A. 根據(jù)錯誤類型返回不同的返回代碼下例顯示帶有特殊處理的過程get_sales_for_title,該過程將為各種錯誤設(shè)置特殊的返回代碼值。表5-7 顯示該存儲過程向每種可能的錯誤所賦予的整型值。 各種錯誤返回代碼值 值 含義 0 成功執(zhí)行。 1 未指定所需的參數(shù)值。 2 指定的參數(shù)值無效。 3 獲得銷售值時出現(xiàn)錯誤。 4 發(fā)現(xiàn)銷售值為NULL 的書名。CREATE PROCEDURE get_sales_for_title- T
40、his is the input parameter, with a default.title varchar(80) = NULL,- This is the output parameter.ytd_sales int OUTPUTAS- Validate the title parameter.IF title IS NULLBEGINPRINT "ERROR: You must specify a title value."RETURN(1)ENDELSEBEGIN- Make sure the title is valid.IF (SELECT COUNT(*)
41、 FROM titlesWHERE title = title) = 0RETURN(2)END- Get the sales for the specified title and- assign it to the output parameter.SELECT ytd_sales = ytd_salesFROM titlesWHERE title = title- Check for SQL Server errors.IF ERROR <> 0BEGINRETURN(3)ENDELSEBEGIN- Check to see if the ytd_sales value is
42、 NULL.IF ytd_sales IS NULLRETURN(4)ELSE- SUCCESS!RETURN(0)ENDGO以這種方法使用返回代碼,將使調(diào)用程序得以檢測和處理執(zhí)行存儲過程時發(fā)生的錯誤。B.處理從存儲過程返回的不同返回代碼下例創(chuàng)建處理從get_sales_for_title 過程返回的返回代碼的程序。- Declare the variables to receive the output value and return code- of the procedure.DECLARE ytd_sales_for_title int, ret_code INT- Execute
43、the procedure with a title_id value- and save the output value and return code in variables.EXECUTE ret_code = get_sales_for_title"Sushi, Anyone?",ytd_sales = ytd_sales_for_title OUTPUT- Check the return codes.IF ret_code = 0BEGINPRINT "Procedure executed successfully"- Display t
44、he value returned by the procedure.PRINT 'Sales for "Sushi, Anyone?": ' + CONVERT(varchar(6),ytd_sales_for_title)ENDELSE IF ret_code = 1PRINT "ERROR: No title_id was specified."ELSE IF ret_code = 2PRINT "ERROR: An invalid title_id was specified."ELSE IF ret_code
45、 = 3PRINT "ERROR: An error occurred getting the ytd_sales."GO這個例子創(chuàng)建了一個存儲過程,過程中第一個和第三個參數(shù)為默認值。當(dāng)運行該過程時,如果調(diào)用時沒有傳遞值或者指定了默認值,這些默認值就會賦給第一個和第三個參數(shù)。注意 DEFAULT 關(guān)鍵字有多種使用方法。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'proc_calculate_taxes' AND type = 'P')DROP PROCEDURE pr
46、oc_calculate_taxesGO- Create the stored procedure.CREATE PROCEDURE proc_calculate_taxes (p1 smallint = 42, p2 char(1),p3 varchar(8) = 'CAR')ASSELECT *FROM mytableproc_calculate_taxes 存儲過程可以以多種組合方式執(zhí)行:EXECUTE proc_calculate_taxes p2 = 'A'EXECUTE proc_calculate_taxes 69, 'B'EXEC
47、UTE proc_calculate_taxes 69, 'C', 'House'EXECUTE proc_calculate_taxes p1 = DEFAULT, p2 = 'D'EXECUTE proc_calculate_taxes DEFAULT, p3 = 'Local', p2 = 'E'EXECUTE proc_calculate_taxes 69, 'F', p3 = DEFAULTEXECUTE proc_calculate_taxes 95, 'G', DEFA
48、ULTEXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULTEXECUTE proc_calculate_taxes DEFAULT, 'I', p3 = DEFAULT簡述使用存儲過程的優(yōu)勢有:1.允許模塊化程序設(shè)計:只需創(chuàng)建過程一次并將其存儲在數(shù)據(jù)庫中,以后即可在程序中調(diào)用該過程任意次;2.允許更快執(zhí)行:如果某操作需要大量Transact-SQL 代碼或需重復(fù)執(zhí)行,存儲過程將比Transact-SQL 批代碼的執(zhí)行要快;3.減少網(wǎng)絡(luò)流量:一個需要數(shù)百行Transact-SQL 代碼的操作由一條執(zhí)行過程代碼的單獨語
49、句就可實現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼;4.可作為安全機制使用:即使對于沒有直接執(zhí)行存儲過程中語句的權(quán)限的用戶,也可授予他們執(zhí)行該存儲過程的權(quán)。21、觸發(fā)器:觸發(fā)器是一種特殊類型的存儲過程,它在指定的表中的數(shù)據(jù)發(fā)生變化時自動生效,在用戶試圖對指定的表執(zhí)行指定的數(shù)據(jù)修改語句時自動執(zhí)行,觸發(fā)器常常用于強制業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性。語法CREATE TRIGGER trigger_nameON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS
50、 IF UPDATE ( column ) AND | OR UPDATE ( column ) .n | IF ( COLUMNS_UPDATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask .n sql_statement .n A. 使用帶有提醒消息的觸發(fā)器當(dāng)有人試圖在titles 表中添加或更改數(shù)據(jù)時,下例將向客戶端顯示一條消息。消息50009 是sysmessages 中的用戶定義消息。有關(guān)創(chuàng)建用戶定義消息的更多信息,請參見sp_addmessage。USE pubsIF EXIS
51、TS (SELECT name FROM sysobjectsWHERE name = 'reminder' AND type = 'TR')DROP TRIGGER reminderGOCREATE TRIGGER reminderON titlesFOR INSERT, UPDATEAS RAISERROR (50009, 16, 10)GOB. 使用帶有提醒電子郵件的觸發(fā)器當(dāng)titles 表更改時,下例將電子郵件發(fā)送給指定的人員(MaryM)。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name
52、= 'reminder' AND type = 'TR')DROP TRIGGER reminderGOCREATE TRIGGER reminderON titlesFOR INSERT, UPDATE, DELETEASEXEC master.xp_sendmail 'MaryM','Don''t forget to print a report for the distributors.'GOC. 在 employee 和 jobs 表之間使用觸發(fā)器業(yè)務(wù)規(guī)則由于CHECK 約束只能引用定義了列級或表級約束的列
53、,表間的任何約束(在下例中是指業(yè)務(wù)規(guī)則)都必須定義為觸發(fā)器。下例創(chuàng)建一個觸發(fā)器,當(dāng)插入或更新雇員工作級別(job_lvls)時,該觸發(fā)器檢查指定雇員的工作級別(由此決定薪水)是否處于為該工作定義的范圍內(nèi)。若要獲得適當(dāng)?shù)姆秶?,必須引用jobs表。USE pubsIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'employee_insupd' AND type = 'TR')DROP TRIGGER employee_insupdGOCREATE TRIGGER employee_insupdON employ
54、eeFOR INSERT, UPDATEAS/* Get the range of level for this job type from the jobs table. */DECLARE min_lvl tinyint,max_lvl tinyint,emp_lvl tinyint,job_id smallintSELECT min_lvl = min_lvl,max_lvl = max_lvl,emp_lvl = i.job_lvl,job_id = i.job_idFROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
55、JOIN jobs j ON j.job_id = i.job_idIF (job_id = 1) and (emp_lvl <> 10)BEGINRAISERROR ('Job id 1 expects the default level of 10.', 16, 1)ROLLBACK TRANSACTIONENDELSEIF NOT (emp_lvl BETWEEN min_lvl AND max_lvl)BEGINRAISERROR ('The level for job_id:%d should be between %d and %d.',16, 1, job_id, min_lvl, max_lvl)ROLLBACK TRANSACTIONENDD. 使用延遲名稱解析下例創(chuàng)建兩個觸發(fā)器以說明延遲名稱解析。USE pu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度產(chǎn)業(yè)園租賃及產(chǎn)業(yè)孵化基地建設(shè)合同4篇
- 2025年度拆除工程風(fēng)險評估分包合同示范文本4篇
- 2025年LED路燈節(jié)能升級項目購銷及維護合同3篇
- 2025年度商業(yè)街租賃合同標準范本4篇
- 2025年度彩鋼房拆除與裝配式建筑推廣合同范本3篇
- 2025年度廠房建設(shè)項目環(huán)境影響評價合同范本4篇
- 2024版招商引資居間合同協(xié)議書范本
- 2025年度電子游戲角色插畫開發(fā)合同4篇
- 2025年度生物醫(yī)藥產(chǎn)業(yè)項目合作協(xié)議范本4篇
- 2025年下半年貴州高速公路集團限公司統(tǒng)一公開招聘119人高頻重點提升(共500題)附帶答案詳解
- 資產(chǎn)評估服務(wù)房屋征收項目測繪實施方案
- 2025年經(jīng)濟形勢會議講話報告
- 北師大版小學(xué)三年級上冊數(shù)學(xué)第五單元《周長》測試卷(含答案)
- 國家安全責(zé)任制落實情況報告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級下冊【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 電工基礎(chǔ)知識培訓(xùn)課程
- 鐵路基礎(chǔ)知識題庫單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實踐與挑戰(zhàn)
評論
0/150
提交評論