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

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

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

前言

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

如何創(chuàng)建存儲過程

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

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

在這里插入圖片描述

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> -- 這一行表示存儲過程的名稱, '<>' 是占位符,將其替換為存儲過程的名稱
	-- 以下列出存儲過程的參數(shù)以及返回參數(shù),這是設(shè)置存儲過程有哪些參數(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 -- 從這里開始就是存儲過程的主體部分
	-- 這里面的內(nèi)容就是 SQL 語句集,可以放置許多的 SQL 增刪查改等操作腳本
END -- 這里結(jié)束存儲過程,表示存儲過程的 SQL 集在這里結(jié)束

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

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

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

CREATE PROCEDURE InsertUser -- 這里存儲過程的名稱為‘InsertUser'
	-- 輸入?yún)?shù)有userno、pwd、username、role、email,輸出參數(shù)有 count
	-- 輸入輸出參數(shù)的名稱前面必須加上 ‘@' ,表示其是一個變量。
	@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)識
AS
BEGIN -- 從這里開始就是存儲過程的主體部分
	-- 這里插入一條數(shù)據(jù)到數(shù)據(jù)表中,數(shù)據(jù)內(nèi)容來源于存儲過程中傳入的內(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é)束存儲過程,表示存儲過程的 SQL 集在這里結(jié)束

存儲過程的使用或調(diào)用

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

DECLARE @pdCount INT; -- 定義返回值參數(shù)
-- 通過 exec <存儲過程名稱> <參數(shù)列表> 調(diào)用存儲過程
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é)果如下所示:

存儲過程的意義

優(yōu)點:  

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

2、存儲過程可以封裝復(fù)雜的數(shù)據(jù)庫操作,簡化操作流程,例如對多個表的更新,刪除等。

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

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

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

缺點:  

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

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

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

結(jié)語

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

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

相關(guān)文章

最新評論