SQL Server之存儲過程基礎知識(1)

什麼是存儲過程呢?
存儲過程就是作爲可執行對象存放在數據庫中的一個或多個SQL命令。
通俗來講:存儲過程其實就是能完成一定操作的一組SQL語句。

那爲什麼要用存儲過程呢?
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2.當對數據庫進行復雜操作時,可將此複雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。
3.存儲過程可以重複使用,可減少數據庫開發人員的工作量。
4.安全性高,可設定只有某些用戶才具有對指定存儲過程的使用權

那存儲過程怎麼用呢?
以下通過表Student 來了解存儲過程,因爲是要了解存儲過程的簡單用法,所以所有例子均很簡單。

無參數存儲過程:
選出Student表中的所有信息,

複製代碼
create proc StuProc
as //此處 as 不可以省略不寫
begin //begin 和 end 是一對,不可以只寫其中一個,但可以都不寫
select S#,Sname,Sage,Ssex from student
end
go
複製代碼

有參數存儲過程:
全局變量
全局變量也稱爲外部變量,是在函數的外部定義的,它的作用域爲從變量定義處開始,到本程序文件的末尾。

選出指定姓名的學生信息:

複製代碼
create proc StuProc
@sname varchar(100)
as
begin
select S#,Sname,Sage,Ssex from student where sname=@sname
end
go

exec StuProc '趙雷' //執行語句
複製代碼

上面是在外部給變量賦值,也可以在內部直接給變量設置默認值

複製代碼
create proc StuProc
@sname varchar(100)='趙雷'
as
begin
select S#,Sname,Sage,Ssex from student where sname=@sname
end
go

exec StuProc
複製代碼

也可以把變量的內容輸出,使用output

複製代碼
create proc StuProc
@sname varchar(100),
@IsRight int output //傳出參數
as
if exists (select S#,Sname,Sage,Ssex from student where sname=@sname)
set @IsRight =1
else
set @IsRight=0
go

declare @IsRight int
exec StuProc '趙雷' , @IsRight output
select @IsRight
複製代碼

以上是全局變量,下面來了解局部變量
局部變量也稱爲內部變量。局部變量是在函數內作定義說明的。其作用域僅限於函數內部,離開該函數後再使用這種變量是非法的。
局部變量的定義:必須先用Declare命令定以後纔可以使用,declare{@變量名 數據類型}
局部變量的賦值方法:set{@變量名=表達式}或者select{@變量名=表達式}
局部變量的顯示:select @變量名

複製代碼
create proc StuProc
as
declare @sname varchar(100)
set @sname='趙雷'
select S#,Sname,Sage,Ssex from student where sname=@sname
go

exec StuProc
複製代碼

那如果是要把局部變量的數據顯示出來怎麼辦呢?

複製代碼
create proc StuProc
as
declare @sname varchar(100)
set @sname=(select Sname from student where S#=01)
select @sname
go

exec StuProc

複製代碼

轉載:http://www.cnblogs.com/jiajiayuan/archive/2011/06/15/2081201.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章