久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

SQL Server 7.0 入門(五)

瀏覽:145日期:2023-10-28 09:46:09
使用SQL Server開發(fā)應(yīng)用程序編寫存儲(chǔ)過程與觸發(fā)器;;;;;;;存儲(chǔ)過程和觸發(fā)器是由用戶創(chuàng)建的、駐留在服務(wù)器的一組Transact SQL查詢語句。觸發(fā)器是系統(tǒng)在特定條件下執(zhí)行的。存儲(chǔ)過程能夠改善應(yīng)用程序的性能。當(dāng)客戶程序需要訪問數(shù)據(jù)時(shí),一般要經(jīng)過5個(gè)步驟才能訪問到數(shù)據(jù):1);;查詢語句被發(fā)送到服務(wù)器。2);;服務(wù)器編譯SQL代碼。3);;優(yōu)化產(chǎn)生查詢的執(zhí)行計(jì)劃。4);;數(shù)據(jù)引擎執(zhí)行查詢。5);;結(jié)果發(fā)回客戶程序。存儲(chǔ)過程是在創(chuàng)建時(shí)編譯的,當(dāng)存儲(chǔ)過程第一次執(zhí)行時(shí),SQL Server產(chǎn)生查詢執(zhí)行計(jì)劃并將其存儲(chǔ)進(jìn)來,以利于將來使用。當(dāng)通過存儲(chǔ)過程發(fā)出一個(gè)請(qǐng)求時(shí),上述的第2和第3步就沒有了,這能大大改善系統(tǒng)的性能。即使在第1步上也能提高性能。因?yàn)榇藭r(shí)發(fā)送到服務(wù)器的語句只是一條存儲(chǔ)過程的EXECUTE語句,而不是龐大的、復(fù)雜的查詢。這種特性能降低網(wǎng)絡(luò)的流量。除了性能方面的改善外,存儲(chǔ)過程還提供了方便地集中維護(hù)應(yīng)用程序的功能。如果將查詢嵌入到應(yīng)用程序中。而又需要對(duì)查詢進(jìn)行改變,則應(yīng)用程序需要重新編譯,并重新發(fā)布到所有的客戶端。而在存儲(chǔ)過程中,修改對(duì)用戶而言是透明的,它只需要在服務(wù)器上重新編譯存儲(chǔ)過程。存儲(chǔ)過程還能提供安全機(jī)制,盡管用戶可能無權(quán)執(zhí)行存儲(chǔ)過程中的命令,但它卻可能有權(quán)執(zhí)行存儲(chǔ)過程本身。有時(shí)候,系統(tǒng)管理員不會(huì)給用戶以數(shù)據(jù)修改(UPDATE、INSERT和DELETE)的權(quán)力。創(chuàng)建的存儲(chǔ)過程卻能進(jìn)行這些操作。當(dāng)然用戶需要擁有執(zhí)行該存儲(chǔ)過程的權(quán)力。建立存儲(chǔ)過程;;;;;;;存儲(chǔ)過程可以達(dá)到以下目的:;;;;;;;· 帶參數(shù)。;;;;;;;· 返回狀態(tài)值。;;;;;;;· 調(diào)用其它存儲(chǔ)過程。;;;;;;;· 在遠(yuǎn)程服務(wù)器上執(zhí)行。;;;;;;;存儲(chǔ)過程在“sysobjects”系統(tǒng)表中有一個(gè)表項(xiàng),其類型為“P”。存儲(chǔ)過程的文本存儲(chǔ)在“syscomments”系統(tǒng)表中。創(chuàng)建存儲(chǔ)過程需要使用Transact SQL命令CREATE PROCEDURE。;;;;;;;例如:;;;;;;;USE pubs;;;;;;;GO;;;;;;;;;;;;;;CREATE PROCEDURE ap_GetAuthorsForPublisher;;;;;;;AS;;;;;;;SELECT a.au_lname,a.au_fname;;;;;;;FROM authors a, titleauthor ta, titles t, publishers p;;;;;;;WHERE a.au_id = ta.Au_id;;;;;;;AND ta.Title_id = t.title_id;;;;;;;AND t.pub_id = p.pub_id;;;;;;;AND p.pub_name = ’New Moon Books’;;;;;;;GO;;;;;;;CREATE PROCEDURE語句的語法如下:;;;;;;;CREATE PROC[DURE] procedure_name [;number];;;;;;[@parameter_name ][OUTPUT] [,_n] ];;;;;;[WITH {RECOMPILE | ENCRYPTION}];;;;;;[FOR REPLICATION];;;;;;;AS;;;;;;;Number是用來對(duì)相同名字的過程進(jìn)行分組的整數(shù)。分組是將所有的過程通過drop procedure語句組合到一個(gè)分組中。;;;;;;;@parameter_name指定參數(shù)的名稱。;;;;;;;RECOMPILE表示每次執(zhí)行過程時(shí)都要進(jìn)行編譯。;;;;;;;ENCRYPTION表示過程的文本在“syscomments”表中要加密。;;;;;;;FOR REPLICATION表示過程不能在提交服務(wù)器上執(zhí)行。將參數(shù)傳遞給存儲(chǔ)過程;;;;;;;存儲(chǔ)過程能夠接受參數(shù)。;;;;;;;注意:過程的參數(shù)也可以是用戶定義的數(shù)據(jù)類型。給參數(shù)一個(gè)缺省值;;;;;;;用戶還可以為存儲(chǔ)過程中的參數(shù)定義缺省值。當(dāng)在執(zhí)行時(shí)沒有提供所需的參數(shù)時(shí),系統(tǒng)就使用缺省值作為參數(shù)。如果既沒有定義缺省值,又沒有在執(zhí)行時(shí)提供參數(shù),則SQL Server就會(huì)返回一個(gè)錯(cuò)誤。在存儲(chǔ)過程中定義缺省值,并使用一些邏輯檢測(cè)是否指定了參數(shù)從而采取相應(yīng)的行動(dòng),這是一種很好的習(xí)慣。;;;;;;;例如:;;;;;;;USE pubs;;;;;;;GO;;;;;;;;;;;;;;CREATE PROCEDURE ap_GetAuthorsForPublisher;;;;;;;@PublisherName varchar(40) = ‘New Moon Books’;;;;;;;AS;;;;;;;SELECT a.au_lname,a.au_fname;;;;;;;FROM authors a, titleauthor ta, titles t, publishers p;;;;;;;WHERE a.au_id = ta.Au_id;;;;;;;AND ta.Title_id = t.title_id;;;;;;;AND t.pub_id = p.pub_id;;;;;;;AND p.pub_name = @PublisherName;;;;;;;GO
主站蜘蛛池模板: 阜宁县| 齐河县| 霍州市| 泗水县| 陇南市| 乌鲁木齐市| 安溪县| 来凤县| 赤壁市| 施甸县| 隆昌县| 虞城县| 海安县| 临夏县| 浦东新区| 象山县| 阳高县| 望谟县| 陈巴尔虎旗| 兰坪| 汨罗市| 宁晋县| 海口市| 乌苏市| 霞浦县| 中山市| 贵南县| 莆田市| 海口市| 安塞县| 沙雅县| 永安市| 古交市| 浙江省| 喀喇沁旗| 泗洪县| 定西市| 施秉县| 邵阳市| 怀来县| 江津市|