實(shí)例學(xué)習(xí)mssql存儲(chǔ)過(guò)程分析
我們知道在sql中,我們查詢一個(gè)表,可以通過(guò) select * from student 進(jìn)行查詢,那在存儲(chǔ)過(guò)程中該怎么寫呢?
解:
首先我們打開查詢分析器,(以下舉的例子中的存儲(chǔ)過(guò)程都用查詢管理器來(lái)創(chuàng)建);
然后我們先來(lái)創(chuàng)建一個(gè)存儲(chǔ)過(guò)程以備等會(huì)使用,(就好像在編程中我們先來(lái)編一個(gè)函數(shù)一樣):
create procedure proc_stu
as
select * from student
go
這樣一個(gè)存儲(chǔ)過(guò)程就創(chuàng)建好了,現(xiàn)在我們來(lái)執(zhí)行一下
我們可以在查詢分析器中輸入:execute proc_stu 便可以看到效果
分析一下上面的例子,proc_stu為存儲(chǔ)過(guò)程名,select * from student很顯然就是SQL語(yǔ)句了,執(zhí)行的時(shí)候我們只需要execute(執(zhí)行) 存儲(chǔ)過(guò)程名,就可以了.其中 , procedure 和 execute 可以分別縮寫為 proc 和 exec
以上演示了一個(gè)很簡(jiǎn)單的存儲(chǔ)過(guò)程.下面我們來(lái)看一下帶參數(shù)的存儲(chǔ)過(guò)程
例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ǔ)過(guò)程就OK了,"@ 變量名"是sql 中用來(lái)表示用戶自定義的參數(shù)的方法,有些朋友可能還看到過(guò)"@@變量名",這個(gè)是系統(tǒng)自帶的.也就是說(shuō)這個(gè)變量名是系統(tǒng)定義的,不能隨便亂改.這樣分析后,相信大家應(yīng)該看得懂了吧.
執(zhí)行帶參數(shù)的存儲(chǔ)過(guò)程,需要使用如下語(yǔ)句:exec proc_stu s1 也可以不寫參數(shù),不過(guò)這樣的話,必須首先在創(chuàng)建存儲(chǔ)過(guò)程中加參數(shù)賦值,可以賦Null,否則,系統(tǒng)會(huì)報(bào)錯(cuò).
最后我們來(lái)講一下如何利用存儲(chǔ)過(guò)程返回一個(gè)值:
例3.返回student表中學(xué)生數(shù)
方法一:(使用外部變量output)
create proc proc_stu
@ num int output --注明是外部變量
as
select @ num = count ( * ) from student
go
現(xiàn)在我們來(lái)執(zhí)行下:
要使用外部變量,我們先要進(jìn)行聲明:declare @ return我們用這個(gè)變量來(lái)接收存儲(chǔ)過(guò)程中的外部變量
execute proc_stu , @ num = @ return output
這樣我們便得到了這個(gè)返回值,現(xiàn)在我們通過(guò)如下賦值語(yǔ)句來(lái)顯示這個(gè)返回值
select ' return ' = @ return
方法二(使用return):
注:return 只能返回整形數(shù)據(jù)
create proc proc_stu
@ num int
as
select @ num = count ( * ) from student
return @ num
go
我們來(lái)執(zhí)行下:
declare @ return
exec @ return = proc_stu
select ' return ' = @ return
- mssql使用存儲(chǔ)過(guò)程破解sa密碼
- MSSQL監(jiān)控?cái)?shù)據(jù)庫(kù)的DDL操作(創(chuàng)建,修改,刪除存儲(chǔ)過(guò)程,創(chuàng)建,修改,刪除表等)
- PHP得到mssql的存儲(chǔ)過(guò)程的輸出參數(shù)功能實(shí)現(xiàn)
- MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)
- mssql存儲(chǔ)過(guò)程表名和字段名為變量的實(shí)現(xiàn)方法
- MSSQL存儲(chǔ)過(guò)程學(xué)習(xí)筆記一 關(guān)于存儲(chǔ)過(guò)程
- MySQL 存儲(chǔ)過(guò)程中執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的方法
- sql存儲(chǔ)過(guò)程詳解
- sqlserver存儲(chǔ)過(guò)程語(yǔ)法詳解
- MSSQL事務(wù)的存儲(chǔ)過(guò)程
相關(guān)文章
SQL Server 分頁(yè)查詢存儲(chǔ)過(guò)程代碼
SQL Server分頁(yè)查詢存儲(chǔ)過(guò)程,對(duì)于想使用存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)的朋友可以參考下。2010-05-05
使用 SQL 服務(wù)器時(shí),"評(píng)估期已過(guò)期"錯(cuò)誤消息(解決方法)
這篇文章主要介紹了使用 SQL 服務(wù)器時(shí),"評(píng)估期已過(guò)期"錯(cuò)誤消息,本文分步驟給大家分享解決方法,需要的朋友可以參考下2019-12-12
DBCC CHECKIDENT 重置數(shù)據(jù)庫(kù)標(biāo)識(shí)列從某一數(shù)值開始
DBCC CHECKIDENT 重置數(shù)據(jù)庫(kù)標(biāo)識(shí)列從某一數(shù)值開始2009-10-10
SQL中print、sp_helptext的限制與擴(kuò)展
這篇文章主要介紹了print、sp_helptext的限制與擴(kuò)展 的相關(guān)資料,需要的朋友可以參考下2016-02-02
深入淺出解析mssql在高頻,高并發(fā)訪問(wèn)時(shí)鍵查找死鎖問(wèn)題
SQL Server死鎖使我們經(jīng)常遇到的問(wèn)題,數(shù)據(jù)庫(kù)操作的死鎖是不可避免的,本文并不打算討論死鎖如何產(chǎn)生,重點(diǎn)在于解決死鎖。希望對(duì)您學(xué)習(xí)SQL Server死鎖方面能有所幫助。2014-08-08
SQL Server 數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作方法及遇到問(wèn)題
這篇文章主要介紹了SQL Server 數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作,文中給大家通過(guò)詳細(xì)步驟介紹了需求及問(wèn)題描述 ,需要的朋友可以參考下2018-11-11
SQLServer中Partition By及row_number 函數(shù)使用詳解
partition by關(guān)鍵字是分析性函數(shù)的一部分,partition by用于給結(jié)果集分組,如果沒(méi)有指定那么它把整個(gè)結(jié)果集作為一個(gè)分組,本文給大家介紹SQLServer中Partition By及row_number 函數(shù)使用詳解,需要的朋友參考下2015-11-11

