一概述
Delphi + MS SQL Server是目前最為流行的管理信息系統開發環境和工具
Delphi的強大數據庫操作控件極大地減輕了開發人員的工作量
在這些控件中
最常用的有TQuery
TTable
TADOQuery
TADOTable
TADODataSete等
這些控件執行查詢操作時有一個共同的特點
即將所有數據庫記錄從服務器取回客戶端
再根據查詢的條件進行篩選
很明顯
如果有大量的數據在服務器與客戶端之間傳遞
就會降低程序執行的速度
影響應用程序的性能
針對這種情況
MS SQL Server數據庫和Delphi開發工具都提供了存儲過程來解決這類問題
存儲過程是一段在服務器上執行的程序
它在服務器端對數據庫記錄進行處理
再把結果返回到客戶端
通過使用存儲過程
一方面可以利用服務器強大的計算能力和速度
另一方面避免把大量的數據從服務器下載到客戶端
減少網絡上傳輸量
服務器只需將計算結果傳給客戶端
其效率之高是非常明顯的
二創建存儲過程
在MS SQL Server上的存儲過程可分為二類一類是類似於select 查詢用於檢索數據檢索到的數據能夠以數據集的形式返回給客戶端如
CREATE procedure proc
@dw char()
as
select dwdm from cchdwdm where dw=@dw
該存儲過程有一個輸入參數 @dwdm以數據集的形式返回結果
另一類存儲過程是通過輸出參數返回信息或不返回信息或只執行一個動作如
CREATE procedure proc
@m smallint
@m smallint
@result int OUTPUT
as
select @result=@m*@m
該存儲過程有二個輸入參數@m@m還有一個輸出參數@result
按照創建存儲過程的時機來劃分創建存儲過程也有二種方式一是利用MS SQL Server的Enterprise Manager中的SQL Server Query Analyzer工具此方法較簡單只要輸入存儲過程語句並保存即可
創建存儲過程的另一種方式是利用Delphi的控件如TQueryTADOQuery通過使用SQL語句在運行時動態地創建存儲過程如下例所示
with query do
begin
paramcheck := false;
with SQL do
begin
clear;
add(create procedure proc);
add(@dw char());
add(as);
add(select dwdm from cchdwdm where dw=@dw);
end
execsql;
end;
三存儲過程的參數
存儲過程一般有四種參數類型
* 輸入參數由客戶程序向存儲過程傳遞
* 輸出參數由存儲過程向客戶傳遞
* 輸入/輸出參數可雙向傳遞
* 狀態參數由存儲過程向客戶返回錯誤信息
通過使用Delphi控件TADOStoredProc或TStoredProc來設置或獲取存儲過程的參數如
ADOStoredProcparametersparambyname(@name)value:=張三;
四在Delphi中使用存儲過程的方法
在Delphi中使用存儲過程有以下幾個步驟
把TADOStoredProc或TStoredProc放到窗體上
設置參數連接到MS SQL Server數據庫
設置ProcedureName參數指定存儲過程名也可以在程序運行期設置
單擊TParameters邊上的省略號按鈕如果設置正確則可看到所有的輸入輸出參數
在代碼中設置存儲過程的輸入參數執行存儲過程並獲取返回的數據
通過調用TADOStoredProc控件的parambyname方法設置好所有的輸入參數再調用open方法執行存儲過程如果存儲過程返回參數同樣用parambyname方法獲取參數值如果返回數據集則用訪問數據集的TFields的方法獲取各記錄如以下代碼所示
ADOStoredProcclose;
ADOStoredProcparametersparambyname(@dwmc)value:=某某單位;
ADOStoredProcprepared:=true;
ADOStoredProcopen;
labelcaption:= ADOStoredProcfields[]asstring;
From:http://tw.wingwit.com/Article/program/Delphi/201311/24981.html