實(shí)例學(xué)習(xí)mssql存儲(chǔ)過程分析
更新時(shí)間:2008年07月03日 23:27:20 作者:
以下我來具體舉三個(gè)例子說明存儲(chǔ)過程的3個(gè)主要用法吧:
例1:通過存儲(chǔ)過程查詢數(shù)據(jù)庫中的student表
我們知道在sql中,我們查詢一個(gè)表,可以通過 select * from student 進(jìn)行查詢,那在存儲(chǔ)過程中該怎么寫呢?
解:
首先我們打開查詢分析器,(以下舉的例子中的存儲(chǔ)過程都用查詢管理器來創(chuàng)建);
然后我們先來創(chuàng)建一個(gè)存儲(chǔ)過程以備等會(huì)使用,(就好像在編程中我們先來編一個(gè)函數(shù)一樣):
create procedure proc_stu
as
select * from student
go
這樣一個(gè)存儲(chǔ)過程就創(chuàng)建好了,現(xiàn)在我們來執(zhí)行一下
我們可以在查詢分析器中輸入:execute proc_stu 便可以看到效果
分析一下上面的例子,proc_stu為存儲(chǔ)過程名,select * from student很顯然就是SQL語句了,執(zhí)行的時(shí)候我們只需要execute(執(zhí)行) 存儲(chǔ)過程名,就可以了.其中 , procedure 和 execute 可以分別縮寫為 proc 和 exec
以上演示了一個(gè)很簡單的存儲(chǔ)過程.下面我們來看一下帶參數(shù)的存儲(chǔ)過程
例2.查詢student表中sno(學(xué)號(hào))為 ' s1 '的記錄
create proc proc_stu
@ ssno varchar(10)
as
select * from student where sno = @ ssno
go
這樣一個(gè)帶參數(shù)的存儲(chǔ)過程就OK了,"@ 變量名"是sql 中用來表示用戶自定義的參數(shù)的方法,有些朋友可能還看到過"@@變量名",這個(gè)是系統(tǒng)自帶的.也就是說這個(gè)變量名是系統(tǒng)定義的,不能隨便亂改.這樣分析后,相信大家應(yīng)該看得懂了吧.
執(zhí)行帶參數(shù)的存儲(chǔ)過程,需要使用如下語句:exec proc_stu s1 也可以不寫參數(shù),不過這樣的話,必須首先在創(chuàng)建存儲(chǔ)過程中加參數(shù)賦值,可以賦Null,否則,系統(tǒng)會(huì)報(bào)錯(cuò).
最后我們來講一下如何利用存儲(chǔ)過程返回一個(gè)值:
例3.返回student表中學(xué)生數(shù)
方法一:(使用外部變量output)
create proc proc_stu
@ num int output --注明是外部變量
as
select @ num = count ( * ) from student
go
現(xiàn)在我們來執(zhí)行下:
要使用外部變量,我們先要進(jìn)行聲明:declare @ return我們用這個(gè)變量來接收存儲(chǔ)過程中的外部變量
execute proc_stu , @ num = @ return output
這樣我們便得到了這個(gè)返回值,現(xiàn)在我們通過如下賦值語句來顯示這個(gè)返回值
select ' return ' = @ return
方法二(使用return):
注:return 只能返回整形數(shù)據(jù)
create proc proc_stu
@ num int
as
select @ num = count ( * ) from student
return @ num
go
我們來執(zhí)行下:
declare @ return
exec @ return = proc_stu
select ' return ' = @ return
我們知道在sql中,我們查詢一個(gè)表,可以通過 select * from student 進(jìn)行查詢,那在存儲(chǔ)過程中該怎么寫呢?
解:
首先我們打開查詢分析器,(以下舉的例子中的存儲(chǔ)過程都用查詢管理器來創(chuàng)建);
然后我們先來創(chuàng)建一個(gè)存儲(chǔ)過程以備等會(huì)使用,(就好像在編程中我們先來編一個(gè)函數(shù)一樣):
create procedure proc_stu
as
select * from student
go
這樣一個(gè)存儲(chǔ)過程就創(chuàng)建好了,現(xiàn)在我們來執(zhí)行一下
我們可以在查詢分析器中輸入:execute proc_stu 便可以看到效果
分析一下上面的例子,proc_stu為存儲(chǔ)過程名,select * from student很顯然就是SQL語句了,執(zhí)行的時(shí)候我們只需要execute(執(zhí)行) 存儲(chǔ)過程名,就可以了.其中 , procedure 和 execute 可以分別縮寫為 proc 和 exec
以上演示了一個(gè)很簡單的存儲(chǔ)過程.下面我們來看一下帶參數(shù)的存儲(chǔ)過程
例2.查詢student表中sno(學(xué)號(hào))為 ' s1 '的記錄
create proc proc_stu
@ ssno varchar(10)
as
select * from student where sno = @ ssno
go
這樣一個(gè)帶參數(shù)的存儲(chǔ)過程就OK了,"@ 變量名"是sql 中用來表示用戶自定義的參數(shù)的方法,有些朋友可能還看到過"@@變量名",這個(gè)是系統(tǒng)自帶的.也就是說這個(gè)變量名是系統(tǒng)定義的,不能隨便亂改.這樣分析后,相信大家應(yīng)該看得懂了吧.
執(zhí)行帶參數(shù)的存儲(chǔ)過程,需要使用如下語句:exec proc_stu s1 也可以不寫參數(shù),不過這樣的話,必須首先在創(chuàng)建存儲(chǔ)過程中加參數(shù)賦值,可以賦Null,否則,系統(tǒng)會(huì)報(bào)錯(cuò).
最后我們來講一下如何利用存儲(chǔ)過程返回一個(gè)值:
例3.返回student表中學(xué)生數(shù)
方法一:(使用外部變量output)
create proc proc_stu
@ num int output --注明是外部變量
as
select @ num = count ( * ) from student
go
現(xiàn)在我們來執(zhí)行下:
要使用外部變量,我們先要進(jìn)行聲明:declare @ return我們用這個(gè)變量來接收存儲(chǔ)過程中的外部變量
execute proc_stu , @ num = @ return output
這樣我們便得到了這個(gè)返回值,現(xiàn)在我們通過如下賦值語句來顯示這個(gè)返回值
select ' return ' = @ return
方法二(使用return):
注:return 只能返回整形數(shù)據(jù)
create proc proc_stu
@ num int
as
select @ num = count ( * ) from student
return @ num
go
我們來執(zhí)行下:
declare @ return
exec @ return = proc_stu
select ' return ' = @ return
您可能感興趣的文章:
- Sql Server中的用戶名和登錄名
- MSSQL監(jiān)控?cái)?shù)據(jù)庫的DDL操作(創(chuàng)建,修改,刪除存儲(chǔ)過程,創(chuàng)建,修改,刪除表等)
- PHP得到mssql的存儲(chǔ)過程的輸出參數(shù)功能實(shí)現(xiàn)
- MSSQL MySQL 數(shù)據(jù)庫分頁(存儲(chǔ)過程)
- mssql存儲(chǔ)過程表名和字段名為變量的實(shí)現(xiàn)方法
- MSSQL存儲(chǔ)過程學(xué)習(xí)筆記一 關(guān)于存儲(chǔ)過程
- MySQL 存儲(chǔ)過程中執(zhí)行動(dòng)態(tài)SQL語句的方法
- sql存儲(chǔ)過程詳解
- sqlserver存儲(chǔ)過程語法詳解
- MSSQL事務(wù)的存儲(chǔ)過程
相關(guān)文章
sql 隨機(jī)抽取幾條數(shù)據(jù)的方法 推薦
前段時(shí)間在做項(xiàng)目的時(shí)刻。總是遇到這樣一個(gè)問題。就是要怎么去讓首頁顯示的內(nèi)容不斷的變化。想了很久。也沒有什么結(jié)果。后面去想了一下。得出以下一個(gè)結(jié)果
2009-06-06
MySQL 數(shù)據(jù)庫 source 命令詳解及實(shí)例
這篇文章主要介紹了MySQL 數(shù)據(jù)庫 source 命令詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
2017-06-06
必須會(huì)的SQL語句(六) 數(shù)據(jù)查詢
這篇文章主要介紹了sqlserver中數(shù)據(jù)查詢方法,需要的朋友可以參考下
2015-01-01
MSSQL自動(dòng)重建出現(xiàn)碎片的索引的方法分享
無論何時(shí)對(duì)基礎(chǔ)數(shù)據(jù)執(zhí)行插入、更新或刪除操作,SQL Server 數(shù)據(jù)庫引擎都會(huì)自動(dòng)維護(hù)索引。隨著時(shí)間的推移,這些修改可能會(huì)導(dǎo)致索引中的信息分散在數(shù)據(jù)庫中(含有碎片)。當(dāng)索引包含的頁中的邏輯排序(基于鍵值)與數(shù)據(jù)文件中的物理排序不匹配時(shí),就存在碎片。碎片非常多的索引可能會(huì)降低查詢性能,導(dǎo)致應(yīng)用程序響應(yīng)緩慢。
2014-06-06
深入SQL SERVER合并相關(guān)操作Union,Except,Intersect的詳解
本篇文章是對(duì)SQL SERVER合并相關(guān)操作Union,Except,Intersect進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
2013-06-06
眾所周知,在M$sql中有個(gè)絕對(duì)是網(wǎng)絡(luò)安全中的隱患的帳號(hào)sa,系統(tǒng)管理員 (sa),默認(rèn)情況下,它指派給固定服務(wù)器角色 sysadmin,并不能進(jìn)行更改。這個(gè)sa一般情況下是既不可以更改名稱,也不可以刪除,呵呵,有點(diǎn)雞肋的味道,棄置可惜,食之無味。裝上sql2000之后,感覺怪怪的,放著這個(gè)后門在,始終都不放心,擔(dān)心有一天被人破出密碼,那偶的電腦不就完拉??赡苣慊卣f設(shè)個(gè)強(qiáng)壯點(diǎn)的密碼,這個(gè)辦法是可行,可不是長久之記,所謂斬草要除根,要是把sa給刪拉就不用擔(dān)心那些"黑客"暴力破解拉。
2008-04-04
根據(jù)日期知道當(dāng)天是星期幾的手動(dòng)計(jì)算方法
在網(wǎng)上看到一篇文章,非常有意思,根據(jù)日期知道當(dāng)天是星期幾的方法,來看看吧。
2010-03-03 
