翻譯|使用教程|編輯:黃竹雯|2019-03-13 16:09:13.000|閱讀 860 次
概述:本篇文章主要介紹使用UniDAC執(zhí)行存儲(chǔ)過程的方法。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Universal Data Access Components (UniDAC)是一款通用數(shù)據(jù)庫(kù)訪問組件,提供了多個(gè)數(shù)據(jù)庫(kù)的直接訪問,如針對(duì)Windows的Delphi,C++Builder, Lazarus (以及 Free Pascal), Mac OS X, iOS,Android,Linux和64和32位的FreeBSD等等。我們將長(zhǎng)期的經(jīng)驗(yàn)集于這個(gè)小組件,提供統(tǒng)一的數(shù)據(jù)庫(kù)連接訪問(如oracle、微軟SQL等等)。這意味著你可以在你的項(xiàng)目之間輕松地切換不同的數(shù)據(jù)庫(kù),以及創(chuàng)建跨數(shù)據(jù)庫(kù)應(yīng)用程序接口。
本篇文章主要介紹使用UniDAC執(zhí)行存儲(chǔ)過程的方法。
UniDAC中的存儲(chǔ)過程可以使用以下組件之一執(zhí)行:,,,。你將在下面找到使用這些組件執(zhí)行存儲(chǔ)過程的說明,當(dāng)然,是從最簡(jiǎn)單的方法開始。
執(zhí)行存儲(chǔ)過程的最簡(jiǎn)單方法是TUniConnection組件,但它有一些限制。TUniConnection沒有SQL,StoredProcName或Params等屬性。因此,每次需要執(zhí)行它時(shí),你都需要提供存儲(chǔ)過程名稱和參數(shù)值。 TUniConnection不支持輸出參數(shù),但你可以從函數(shù)中獲取結(jié)果參數(shù)。TUniConnection也不支持preparation。存儲(chǔ)過程是使用和方法執(zhí)行的。
所以,如果你需要執(zhí)行僅返回記錄集和輸出參數(shù)一次的存儲(chǔ)過程,TUniConnection組件是最佳選擇。
TUniSQL是一個(gè)獨(dú)立的組件,專門用于執(zhí)行不返回記錄集的命令。它沒有數(shù)據(jù)存儲(chǔ),因此它比TUniQuery或TUniStoredProc消耗更少的內(nèi)存,并且工作速度更快。要執(zhí)行存儲(chǔ)過程,必須為TUniSQL的SQL屬性分配適當(dāng)?shù)拿睢?它可以手動(dòng)分配,也可以使用方法創(chuàng)建。
CreateProcCall方法接受存儲(chǔ)過程名稱,從服務(wù)器獲取存儲(chǔ)過程的描述,并生成帶參數(shù)的SQL命令。生成的命令自動(dòng)分配給SQL屬性。可以使用Params,ParamByName等屬性在設(shè)計(jì)時(shí)和運(yùn)行時(shí)訪問參數(shù)。
與之前的存儲(chǔ)過程執(zhí)行方法相比,TUniSQL支持各種參數(shù)(INPUT,OUTPUT等)。對(duì)于存儲(chǔ)過程的可重復(fù)執(zhí)行,你不需要在每次執(zhí)行時(shí)傳遞SQL命令。它存儲(chǔ)在SQL屬性中。
可以準(zhǔn)備TUniSQL的每個(gè)命令。在某些情況下,preparation可以提高執(zhí)行性能。
TUniSQL是一個(gè)功能強(qiáng)大的組件,對(duì)于不返回結(jié)果集,需要多次執(zhí)行或返回輸出參數(shù)的存儲(chǔ)過程是一個(gè)合適的選擇。
另一個(gè)你可以選擇用來執(zhí)行存儲(chǔ)過程的組件是TUniQuery。除了TUniSQL提供的功能外,TUniQuery還允許從存儲(chǔ)過程中獲取記錄集并對(duì)其進(jìn)行修改。如果存儲(chǔ)過程返回多個(gè)記錄集,則可以按順序訪問所有記錄集。 Open方法打開第一個(gè)記錄集。OpenNext方法關(guān)閉當(dāng)前記錄集并打開下一個(gè)記錄集。如果服務(wù)器已發(fā)送有關(guān)查詢的足夠多的元信息,則獲取的數(shù)據(jù)集將是可編輯的。否則,為了獲得可編輯的數(shù)據(jù)集,你應(yīng)該正確設(shè)置,等屬性。
TUniQuery是執(zhí)行返回記錄集的存儲(chǔ)過程的不錯(cuò)選擇。
TUniStoredProc是專為處理存儲(chǔ)過程而設(shè)計(jì)的組件。如果你想要執(zhí)行存儲(chǔ)過程,只需將其名稱分配給StoredProcName屬性,調(diào)用PrepareSQL來描述參數(shù),分配參數(shù)值,然后調(diào)用Execute即可。 如果存儲(chǔ)過程沒有要分配的輸入或輸入/輸出參數(shù),則無需調(diào)用PrepareSQL方法。除此之外,TUniStoredProc與TUniQuery相似。它支持結(jié)果集,輸出參數(shù),preparation,并可以通過CreateProcCall方法初始化。
TUniStoredProc是處理涵蓋所有必要功能的存儲(chǔ)過程的最方便的組件。
關(guān)于存儲(chǔ)過程的參數(shù)有幾個(gè)注釋:
UniDAC支持四種參數(shù)類型:輸入,輸出,輸入/輸出和結(jié)果。
TUniConnection可以將輸入?yún)?shù)的值傳遞給服務(wù)器,并從函數(shù)中獲取結(jié)果值。如果未分配參數(shù)值,則將盡可能提供默認(rèn)值。如果未分配的參數(shù)沒有默認(rèn)值,則會(huì)引發(fā)錯(cuò)誤。
TUniSQL,TUniQuery和TUniStoredProc組件可以處理所有這些參數(shù)類型。如果未使用這些組件之一分配輸入?yún)?shù)值,則NULL值將作為參數(shù)值傳遞。分配輸出和結(jié)果參數(shù)值無效,因?yàn)樗鼈冊(cè)趫?zhí)行時(shí)不會(huì)傳遞給服務(wù)器,并且在執(zhí)行后它們將被替換為從服務(wù)器返回的值。
某些存儲(chǔ)過程可能具有參數(shù)的默認(rèn)值。如果要將默認(rèn)參數(shù)值傳遞給存儲(chǔ)過程,則應(yīng)執(zhí)行以下操作:
如果未分配或清除TUniSQL,TUniQuery或TUniStoredProc中的參數(shù)值,則NULL值將作為參數(shù)值傳遞。它與分配默認(rèn)值不同。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn