Sybase的存儲過程是集中存儲在SQL Server中的預先定義且已經編譯好的事務。存儲過程由SQL語句和流程控制語句組成。它的功能包括:接受參數;調用另一過程;返回一個狀態值給調用過程或批處理,指示調用成功或失敗;返回若干個參數值給調用過程或批處理,為調用者提供動態結果;在遠程SQL Server中運行等。
存儲過程的性能特點如下:
·存儲過程是預編譯過的,這就意味著它與普通的SQL語句或批處理的SQL語句不同,當首次運行一個存儲過程時,SQL Server的查詢處理器對其進行分析,在排除了語法錯誤之後形成存儲在系統中的可執行方案。由於查詢處理的大部分工作已經完成,所以存儲過程執行速度很快。
·存儲過程和待處理的數據都放在同一台運行SQL Server的計算機上,使用存儲過程查詢當地的數據,效率自然很高。
·存儲過程一般多由ClIEnt端通過存儲過程的名字進行調用,即跨網傳送的只是存儲過程的名字及少量的參數(如果有的話),而不是構成存儲過程的許多SQL語句,因此可以減少網絡傳輸量,加快系統響應速度。
·存儲過程還有著如同C語言子函數那樣的被調用和返回值的方便特性。
所以,存儲過程大大增強了SQL語言的功能、效率和靈活性。掌握和應用好存儲過程,對進一步發揮Sybase數據庫系統的強大功能有著重要的意義。
存儲過程的語法規則
建立存儲過程的語法規則為:
CREATE PROCedure[owner.]procedurename[;number]
[[(]@parameter_name datatype[=default][OUTput]
[,@parameter_name datatype[=default][OUTput]]...[)]]
[WITH RECOMPILE]
AS SQL_statements
使用存儲過程的語法規則為:
[EXECute][@return-status=]
[[[server.]database.]owner.]procedurename[;number]
[[@parameter_name=]value|[@parameter_name=]@varialbe[OUTput]
[,[@parameter_name=]value|[@parameter_name=]@variable[OUTput]...]]
[WITH RECOMPILE]
下面簡要介紹這兩個命令的常用選項以及建立和使用存儲過程的要點,關於選項的更為詳細的說明請參考有關手冊。
·[[[server.]database.]owner.]procedure_name:存儲過程的名字。
·@parameter_name datatype[=default][OUTput]:形式參數(形參)的名稱、類型。df ault是賦予的缺省值(可選),OUTput指定本參數為輸出參數(可選)。形參是存儲過程中的自變量,可以有多個,名字必須以@打頭,最長30個字符。
·SQL_statements:定義存儲過程功能的SQL語句。
·@return_status:接受存儲過程返回狀態值的變量。
·[@parameter_name=]value:實際參數(實參),@parameter_name為實參的名稱(可選)。如果某個實參以@parameter_name=value提供,那麼隨後的實參也都要采用這一形式提供。
·[@parameter_name=]@varialbe[OUTput]:將變量@varialbe中的值作為實參傳遞給形參@parameter_name(可選),如果變量@varialbe是用來接受返回的參數值,則選項OUTput不可缺少。