六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Delphi、MS SQL Server開發環境下存儲過程的使用

[摘要]曹次華一、概述Delphi + MS SQL Server是目前最為流行的管理信息系統開發環境和工具。Delphi的強大數據庫操作控件極大地減輕了開發人員的工作量,在這些控件中,最常用的有TQuer...
曹次華


一、概述
Delphi + MS SQL Server是目前最為流行的管理信息系統開發環境和工具。Delphi的強大數據庫操作控件極大地減輕了開發人員的工作量,在這些控件中,最常用的有TQuery、TTable、TADOQuery、TADOTable、TADODataSete等,這些控件執行查詢操作時有一個共同的特點,即將所有數據庫記錄從服務器取回客戶端,再根據查詢的條件進行篩選。很明顯,如果有大量的數據在服務器與客戶端之間傳遞,就會降低程序執行的速度,影響應用程序的性能。針對這種情況,MS SQL Server數據庫和Delphi開發工具都提供了存儲過程來解決這類問題。存儲過程是一段在服務器上執行的程序,它在服務器端對數據庫記錄進行處理,再把結果返回到客戶端。通過使用存儲過程,一方面可以利用服務器強大的計算能力和速度,另一方面避免把大量的數據從服務器下載到客戶端,減少網絡上傳輸量,服務器只需將計算結果傳給客戶端,其效率之高是非常明顯的。
二、創建存儲過程
在MS SQL Server上的存儲過程可分為二類,一類是類似于select 查詢,用于檢索數據,檢索到的數據能夠以數據集的形式返回給客戶端,如
CREATE procedure proc1
@dw char(20)
as
select dwdm from cchdwdm where dw=@dw
該存儲過程有一個輸入參數 @dwdm,以數據集的形式返回結果。
另一類存儲過程是通過輸出參數返回信息或不返回信息,或只執行一個動作。如:
CREATE procedure proc2
@m1 smallint,
@m2 smallint
@result int OUTPUT
as
select @result=@m1*@m2
該存儲過程有二個輸入參數@m1、@m2,還有一個輸出參數@result。
按照創建存儲過程的時機來劃分,創建存儲過程也有二種方式,一是利用MS SQL Server的Enterprise Manager中的SQL Server Query Analyzer工具,此方法較簡單,只要輸入存儲過程語句并保存即可。
創建存儲過程的另一種方式是利用Delphi的控件,如TQuery、TADOQuery,通過使用SQL語句在運行時動態地創建存儲過程。如下例所示。
with query1 do
begin
paramcheck := false;
with SQL do
begin
clear;
add('create procedure proc1');
add('@dw char(20)');
add('as');
add('select dwdm from cchdwdm where dw=@dw');
end
execsql;
end;

三、存儲過程的參數
存儲過程一般有四種參數類型:
輸入參數,由客戶程序向存儲過程傳遞
輸出參數,由存儲過程向客戶傳遞
輸入/輸出參數,可雙向傳遞
狀態參數,由存儲過程向客戶返回錯誤信息
通過使用Delphi控件TADOStoredProc或TStoredProc來設置或獲取存儲過程的參數,如:
ADOStoredProc1.parameters.parambyname('@name').value:='張三';

四、在Delphi中使用存儲過程的方法
在Delphi中使用存儲過程有以下幾個步驟:
1、把TADOStoredProc或TStoredProc放到窗體上。
2、設置參數連接到MS SQL Server數據庫。
3、設置ProcedureName參數,指定存儲過程名,也可以在程序運行期設置。
4、單擊TParameters邊上的省略號按鈕,如果設置正確,則可看到所有的輸入輸出參數。
5、在代碼中設置存儲過程的輸入參數、執行存儲過程并獲取返回的數據。
通過調用TADOStoredProc控件的parambyname方法,設置好所有的輸入參數,再調用open方法執行存儲過程。如果存儲過程返回參數,同樣用parambyname方法獲取參數值,如果返回數據集,則用訪問數據集的TFields的方法獲取各記錄。如以下代碼所示:

ADOStoredProc1.close;
ADOStoredProc1.parameters.parambyname('@dwmc').value:='某某單位';
ADOStoredProc1.prepared:=true;
ADOStoredProc1.open;
label1.caption:= ADOStoredProc1.fields[0].asstring; 


主站蜘蛛池模板: 日本欧美高清 | 日韩精品一区二区三区 在线观看 | 日韩a| 日本大片免a费观看视频+播放器 | 欧洲大肥批 | 色综合久久伊人 | 日本在线观看高清不卡免v 日本在线观看a | 日韩怡春院| 日本一区二区三区在线观看视频 | 人人揉人人添人人捏人人看 | 天天色综合影视 | 色吧久久 | 青青青爽在线视频免费观看 | 日本成人激情视频 | 天天爽夜夜爽一区二区三区 | 婷婷色爱区综合五月激情韩国 | 在线精品亚洲 | 欧美线在线精品观看视频 | 午夜免费片 | 青草视频网站在线观看 | 青青色视频| 欧美在线免费播放 | 亚洲 欧美 精品专区 极品 | 日本无卡码免费一区二区三区 | 青青视频免费在线观看 | 日韩高清图色 | 日本一区二区三区四区五区 | 亚洲精品综合网 | 亚洲第一视频区 | 青娱乐手机免费视频 | 深夜福利亚洲 | 亚洲欧美久久婷婷爱综合一区天堂 | 日日夜夜狠狠操 | 热久久久久久 | 中文字幕午夜乱理片 | 亚洲自偷自偷图片在线高清 | 日韩亚洲欧美一区二区三区 | 五月天国产 | 青青青青在线视频 | 亚洲天堂资源网 | 日日夜夜影院 |