如果你接觸過其他的程式語言,那麼就好理解了,預存程序就像是方法一樣。
竟然他是方法那麼他就有類似的方法名,方法要傳遞的變數和回傳結果,所以預存程序有預存程序名有預存程序參數也有回傳值。
預存程序的優點:
儲存程序可分為系統儲存程序、擴充儲存程序與使用者自訂的預存程序
我們先來看系統預存程序,系統預存程序由系統定義,主要存放在MASTER資料庫中,名稱以"SP"開頭或以"XP"開頭。雖然這些系統預存程序在MASTER資料庫中,
但我們在其他資料庫還是可以呼叫系統預存程序。有一些系統預存程序會在建立新的資料庫的時候被自動建立在目前資料庫中。
常用系統預存程序有:
建立預存程序的語法如下:
CREATE PROC[EDURE] 存储过程名 @参数1 [数据类型]=[默认值] [OUTPUT] @参数2 [数据类型]=[默认值] [OUTPUT] AS SQL语句 EXEC 过程名[参数]
使用預存程序實例:
create procedure proc_select_officeinfo--(存储过程名)as select Id,Name from Office_Info--(sql语句) exec proc_select_officeinfo--(调用存储过程)
create procedure procedure_proc_GetoffinfoById ---- Name dbo.Office_Info Id=@Id----(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔) 注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称
as
begin
select @Name=Name from dbo.Office_Info where Id=@Id --(sql語句)
end
declare @houseName varchar(20) --宣告一個變數,取得預存程序傳出的值
4,@houseName output--(傳說參數要加output 這邊如果用@變數= OUTPUT會報錯,所以換一種寫法)
select @houseName-- (顯示值)
create procedure proc_office_info--(存储过程名) @Id int--(参数名 参数类型)as beginif(select Name from dbo.Office_Info where Id=@Id)=null --(sql语句) beginreturn -1endelsebeginreturn 1end end declare @house varchar(20) --声明一个变量,获取存储过程传出来的值 exec @house=proc_office_info 2 --(调用存储过程,用变量接收返回值)--注:带返回值的存储过程只能为int类型的返回值 print @house
以上是淺談資料庫的預存程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!