什麼是預存程序呢?
預存程序就是作為可執行物件存放在資料庫中的一個或多個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
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