日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

SQL存储过程(☆)

發(fā)布時(shí)間:2025/5/22 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL存储过程(☆) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.sql存儲(chǔ)過程概述
2.SQL存儲(chǔ)過程創(chuàng)建
3.sql存儲(chǔ)過程及應(yīng)用
4.各種存儲(chǔ)過程使用指南
5.ASP中存儲(chǔ)過程調(diào)用的兩種方式及比較
6.SQL存儲(chǔ)過程在.NET數(shù)據(jù)庫中的應(yīng)用
7.使用SQL存儲(chǔ)過程要特別注意的問題 1.sql存儲(chǔ)過程概述

在大型數(shù)據(jù)庫系統(tǒng)中,存儲(chǔ)過程和觸發(fā)器具有很重要的作用。無論是存儲(chǔ)過程還是觸發(fā)器,都是SQL 語句和流程控制語句的集合。就本質(zhì)而言,觸發(fā)器也是一種存儲(chǔ)過程。存儲(chǔ)過程在運(yùn)算時(shí)生成執(zhí)行方式,所以,以后對其再運(yùn)行時(shí)其執(zhí)行速度很快。SQL Server 2000 不僅提供了用戶自定義存儲(chǔ)過程的功能,而且也提供了許多可作為工具使用的系統(tǒng)存儲(chǔ)過程。

存儲(chǔ)過程的概念

? ? 存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫。中用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來執(zhí)行它。

? ? 在SQL Server 的系列版本中存儲(chǔ)過程分為兩類:系統(tǒng)提供的存儲(chǔ)過程和用戶自定義存儲(chǔ)過程。系統(tǒng)過程主要存儲(chǔ)在master 數(shù)據(jù)庫中并以sp_為前綴,并且系統(tǒng)存儲(chǔ)過程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server 提供支持。通過系統(tǒng)存儲(chǔ)過程,MS SQL Server 中的許多管理性或信息性的活動(dòng)(如了解數(shù)據(jù)庫對象、數(shù)據(jù)庫信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲(chǔ)過程被放在master 數(shù)據(jù)庫中,但是仍可以在其它數(shù)據(jù)庫中對其進(jìn)行調(diào)用,在調(diào)用時(shí)不必在存儲(chǔ)過程名前加上數(shù)據(jù)庫名。而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫時(shí),一些系統(tǒng)存儲(chǔ)過程會(huì)在新數(shù)據(jù)庫中被自動(dòng)創(chuàng)建。用戶自定義存儲(chǔ)過程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲(chǔ)過程。在本章中所涉及到的存儲(chǔ)過程主要是指用戶自定義存儲(chǔ)過程。

? ? 存儲(chǔ)過程的優(yōu)點(diǎn)

? ? 當(dāng)利用MS SQL Server 創(chuàng)建一個(gè)應(yīng)用程序時(shí),Transaction-SQL 是一種主要的編程語言。若運(yùn)用Transaction-SQL 來進(jìn)行編程,有兩種方法。其一是,在本地存儲(chǔ)Transaction- SQL 程序,并創(chuàng)建應(yīng)用程序向SQL Server 發(fā)送命令來對結(jié)果進(jìn)行處理。其二是,可以把部分用Transaction-SQL 編寫的程序作為存儲(chǔ)過程存儲(chǔ)在SQL Server 中,并創(chuàng)建應(yīng)用程序來調(diào)用存儲(chǔ)過程,對數(shù)據(jù)結(jié)果進(jìn)行處理存儲(chǔ)過程能夠通過接收參數(shù)向調(diào)用者返回結(jié)果集,結(jié)果集的格式由調(diào)用者確定;返回狀態(tài)值給調(diào)用者,指明調(diào)用是成功或是失敗;包括針對數(shù)據(jù)庫的操作語句,并且可以在一個(gè)存儲(chǔ)過程中調(diào)用另一存儲(chǔ)過程。

? ? 我們通常更偏愛于使用第二種方法,即在SQL Server 中使用存儲(chǔ)過程而不是在客戶計(jì)算機(jī)上調(diào)用Transaction-SQL 編寫的一段程序,原因在于存儲(chǔ)過程具有以下優(yōu)點(diǎn):

? ? (1) 存儲(chǔ)過程允許標(biāo)準(zhǔn)組件式編程

? ? 存儲(chǔ)過程在被創(chuàng)建以后可以在程序中被多次調(diào)用,而不必重新編寫該存儲(chǔ)過程的SQL 語句。而且數(shù)據(jù)庫專業(yè)人員可隨時(shí)對存儲(chǔ)過程進(jìn)行修改,但對應(yīng)用程序源代碼毫無影響(因?yàn)閼?yīng)用程序源代碼只包含存儲(chǔ)過程的調(diào)用語句),從而極大地提高了程序的可移植性。

? ? (2) 存儲(chǔ)過程能夠?qū)崿F(xiàn)較快的執(zhí)行速度

? ? 如果某一操作包含大量的Transaction-SQL 代碼或分別被多次執(zhí)行,那么存儲(chǔ)過程要比批處理的執(zhí)行速度快很多。因?yàn)榇鎯?chǔ)過程是預(yù)編譯的,在首次運(yùn)行一個(gè)存儲(chǔ)過程時(shí),查詢優(yōu)化器對其進(jìn)行分析、優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行計(jì)劃。而批處理的Transaction- SQL 語句在每次運(yùn)行時(shí)都要進(jìn)行編譯和優(yōu)化,因此速度相對要慢一些。

? ? (3) 存儲(chǔ)過程能夠減少網(wǎng)絡(luò)流量

? ? 對于同一個(gè)針對數(shù)據(jù)數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及到的 Transaction-SQL 語句被組織成一存儲(chǔ)過程,那么當(dāng)在客戶計(jì)算機(jī)上調(diào)用該存儲(chǔ)過程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語句,否則將是多條SQL 語句,從而大大增加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負(fù)載。

? ? (4) 存儲(chǔ)過程可被作為一種安全機(jī)制來充分利用

? ? 系統(tǒng)管理員通過對執(zhí)行某一存儲(chǔ)過程的權(quán)限進(jìn)行限制,從而能夠?qū)崿F(xiàn)對相應(yīng)的數(shù)據(jù)訪問權(quán)限的限制,避免非授權(quán)用戶對數(shù)據(jù)的訪問,保證數(shù)據(jù)的安全。(我們將在14 章“SQLServer 的用戶和安全性管理”中對存儲(chǔ)過程的這一應(yīng)用作更為清晰的介紹)

? ? 注意:存儲(chǔ)過程雖然既有參數(shù)又有返回值,但是它與函數(shù)不同。存儲(chǔ)過程的返回值只是指明執(zhí)行是否成功,并且它不能像函數(shù)那樣被直接調(diào)用,也就是在調(diào)用存儲(chǔ)過程時(shí),在存儲(chǔ)過程名字前一定要有EXEC保留字。

轉(zhuǎn)載于:https://blog.51cto.com/sxj007/110945

總結(jié)

以上是生活随笔為你收集整理的SQL存储过程(☆)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。