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