欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?server創(chuàng)建存儲(chǔ)過(guò)程詳細(xì)圖文教程

 更新時(shí)間:2024年01月06日 14:54:58   作者:耕耘蟲(chóng)  
在SQL中存儲(chǔ)過(guò)程類(lèi)似于編程語(yǔ)言的函數(shù),即當(dāng)創(chuàng)建一個(gè)存儲(chǔ)過(guò)程之后便可以在接下來(lái)任何類(lèi)似的操作是直接調(diào)用存儲(chǔ)過(guò)程,下面這篇文章主要給大家介紹了關(guān)于SQL?server創(chuàng)建存儲(chǔ)過(guò)程的相關(guān)資料,需要的朋友可以參考下

前言

存儲(chǔ)過(guò)程: 可以理解為完成特定功能的一組 SQL 語(yǔ)句集,存儲(chǔ)在數(shù)據(jù)庫(kù)中,經(jīng)過(guò)第一次編譯,之后的運(yùn)行不需要再次編譯,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)調(diào)用存儲(chǔ)過(guò)程。

如何創(chuàng)建存儲(chǔ)過(guò)程

創(chuàng)建存儲(chǔ)過(guò)程可以有兩種方式:一是在 SSMS 中界面操作創(chuàng)建存儲(chǔ)過(guò)程,而后修改其中的 SQL 語(yǔ)句及存儲(chǔ)過(guò)程名稱;二是通過(guò)命令行直接編寫(xiě)創(chuàng)建存儲(chǔ)過(guò)程。

在操作之前,得要有一個(gè)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)中將要使用存儲(chǔ)過(guò)程查詢或操作的數(shù)據(jù)表,這里以 MyDBDemo 數(shù)據(jù)庫(kù)為例,其中有一個(gè) sys_user 的用戶數(shù)據(jù)表。

在這里插入圖片描述

1、SSMS 界面創(chuàng)建存儲(chǔ)過(guò)程:  

界面鼠標(biāo)操作創(chuàng)建存儲(chǔ)過(guò)程方便快捷,一些基礎(chǔ)的腳本不需要手動(dòng)編寫(xiě),由 SSMS 自動(dòng)生成。

步驟: 展開(kāi)數(shù)據(jù)庫(kù)中的【可編程性】,在【存儲(chǔ)過(guò)程】上鼠標(biāo)單擊右鍵出現(xiàn)彈出菜單,點(diǎn)擊【存儲(chǔ)過(guò)程】即可彈出新的查詢窗口,里面有一些默認(rèn)的 SQL 腳本。

在這里插入圖片描述

軟件自動(dòng)生成的存儲(chǔ)過(guò)程創(chuàng)建腳本,現(xiàn)在可以基于此修改存儲(chǔ)過(guò)程中的內(nèi)容了。

在這里插入圖片描述

說(shuō)明: 從 第 1 行到 20 行不需要關(guān)注,這些都是一些設(shè)置和注釋說(shuō)明,第 21 行到 33 行才是存儲(chǔ)過(guò)程的主要內(nèi)容。下面將通過(guò)代碼逐行介紹這些命令。

CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> -- 這一行表示存儲(chǔ)過(guò)程的名稱, '<>' 是占位符,將其替換為存儲(chǔ)過(guò)程的名稱
	-- 以下列出存儲(chǔ)過(guò)程的參數(shù)以及返回參數(shù),這是設(shè)置存儲(chǔ)過(guò)程有哪些參數(shù)和返回什么數(shù)據(jù)
	<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN -- 從這里開(kāi)始就是存儲(chǔ)過(guò)程的主體部分
	-- 這里面的內(nèi)容就是 SQL 語(yǔ)句集,可以放置許多的 SQL 增刪查改等操作腳本
END -- 這里結(jié)束存儲(chǔ)過(guò)程,表示存儲(chǔ)過(guò)程的 SQL 集在這里結(jié)束

2、SQL 腳本創(chuàng)建存儲(chǔ)過(guò)程:  

腳本創(chuàng)建存儲(chǔ)過(guò)程就是自行編寫(xiě)基礎(chǔ)的創(chuàng)建存儲(chǔ)過(guò)程的語(yǔ)句,如上所示代碼中的內(nèi)容都是自行手動(dòng)編寫(xiě),然后執(zhí)行腳本即可創(chuàng)建好這個(gè)存儲(chǔ)過(guò)程。

如下創(chuàng)建存儲(chǔ)過(guò)程的腳本,是傳入用戶的數(shù)據(jù)參數(shù),插入到數(shù)據(jù)庫(kù)中,而后再查詢出來(lái)展示,詳細(xì)講解請(qǐng)看注釋,SQL 腳本如下所示:

CREATE PROCEDURE InsertUser -- 這里存儲(chǔ)過(guò)程的名稱為‘InsertUser'
	-- 輸入?yún)?shù)有userno、pwd、username、role、email,輸出參數(shù)有 count
	-- 輸入輸出參數(shù)的名稱前面必須加上 ‘@' ,表示其是一個(gè)變量。
	@userno nvarchar(50), --輸入?yún)?shù),用戶編碼
	@pwd nvarchar(50), -- 輸入?yún)?shù),登錄密碼
	@username nvarchar(50), -- 輸入?yún)?shù),用戶姓名
	@email nvarchar(50), -- 輸入?yún)?shù),用戶郵箱
	@count int output-- 輸出參數(shù),當(dāng)前數(shù)據(jù)表中的總數(shù)據(jù)條數(shù),這里輸出參數(shù)采用 ‘output' 標(biāo)識(shí)
AS
BEGIN -- 從這里開(kāi)始就是存儲(chǔ)過(guò)程的主體部分
	-- 這里插入一條數(shù)據(jù)到數(shù)據(jù)表中,數(shù)據(jù)內(nèi)容來(lái)源于存儲(chǔ)過(guò)程中傳入的內(nèi)容,其中用戶角色字段 ‘[role]' 設(shè)置默認(rèn)值為 ‘a(chǎn)dmin'
	INSERT INTO [dbo].[sys_user] ([userno],[pwd],[username],[role],[email])
     VALUES (@userno,@pwd,@username,'admin',@email);
	 -- 查詢出數(shù)據(jù)表
	 select * from [dbo].[sys_user];
	 -- 返回值總條數(shù)查詢
	 select @count = @@ROWCOUNT;
END -- 這里結(jié)束存儲(chǔ)過(guò)程,表示存儲(chǔ)過(guò)程的 SQL 集在這里結(jié)束

存儲(chǔ)過(guò)程的使用或調(diào)用

存儲(chǔ)過(guò)程的使用需要采用關(guān)鍵字 EXEC 加上存儲(chǔ)過(guò)程名稱,而后跟隨參數(shù)的方式。

DECLARE @pdCount INT; -- 定義返回值參數(shù)
-- 通過(guò) exec <存儲(chǔ)過(guò)程名稱> <參數(shù)列表> 調(diào)用存儲(chǔ)過(guò)程
exec [dbo].[InsertUser] @userno='user-1',@pwd='123',@username='wanger',@email='123@abccom',@count=@pdCount output
select @pdCount as '數(shù)據(jù)表總數(shù)' -- 查詢出返回值中的內(nèi)容

執(zhí)行結(jié)果如下所示:

存儲(chǔ)過(guò)程的意義

優(yōu)點(diǎn):  

1、存儲(chǔ)過(guò)程加快系統(tǒng)運(yùn)行速度,存儲(chǔ)過(guò)程只在創(chuàng)建時(shí)編譯,以后每次執(zhí)行時(shí)不需要重新編譯。

2、存儲(chǔ)過(guò)程可以封裝復(fù)雜的數(shù)據(jù)庫(kù)操作,簡(jiǎn)化操作流程,例如對(duì)多個(gè)表的更新,刪除等。

3、可實(shí)現(xiàn)模塊化的程序設(shè)計(jì),存儲(chǔ)過(guò)程可以多次調(diào)用,提供統(tǒng)一的數(shù)據(jù)庫(kù)訪問(wèn)接口,改進(jìn)應(yīng)用程序的可維護(hù)性。

4、存儲(chǔ)過(guò)程可以增加代碼的安全性,對(duì)于用戶不能直接操作存儲(chǔ)過(guò)程中引用的對(duì)象,SQL Server可以設(shè)定用戶對(duì)指定存儲(chǔ)過(guò)程的執(zhí)行權(quán)限。

5、存儲(chǔ)過(guò)程可以降低網(wǎng)絡(luò)流量,存儲(chǔ)過(guò)程代碼直接存儲(chǔ)于數(shù)據(jù)庫(kù)中,在客戶端與服務(wù)器的通信過(guò)程中,不會(huì)產(chǎn)生大量的T_SQL代碼流量。

缺點(diǎn):  

1、數(shù)據(jù)庫(kù)移植不方便,存儲(chǔ)過(guò)程依賴與數(shù)據(jù)庫(kù)管理系統(tǒng), SQL Server 存儲(chǔ)過(guò)程中封裝的操作代碼不能直接移植到其他的數(shù)據(jù)庫(kù)管理系統(tǒng)中。

2、不支持面向?qū)ο蟮脑O(shè)計(jì),無(wú)法采用面向?qū)ο蟮姆绞綄⑦壿嫎I(yè)務(wù)進(jìn)行封裝,甚至形成通用的可支持服務(wù)的業(yè)務(wù)邏輯框架。

3、代碼可讀性差,不易維護(hù)。不支持集群。

結(jié)語(yǔ)

為什么需要存儲(chǔ)過(guò)程:效率高、降低網(wǎng)絡(luò)流量、復(fù)用性高、可維護(hù)性高、安全性高。

到此這篇關(guān)于SQL server創(chuàng)建存儲(chǔ)過(guò)程的文章就介紹到這了,更多相關(guān)SQL server創(chuàng)建存儲(chǔ)過(guò)程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論