] 步驟103 :調(diào)用所述全局函數(shù)或所述全局方法;
[0040] 步驟104:通過所述第一參數(shù),向所述全局函數(shù)或所述全局方法輸入符合所述前 置通用數(shù)據(jù)庫語法的當(dāng)前SQL語句;
[0041] 步驟105 :通過所述第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當(dāng)前目標(biāo)數(shù) 據(jù)庫類型;
[0042] 步驟106 :執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全局方 法輸出的當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的SQL語句。
[0043] 可見,本發(fā)明實(shí)施例提供的一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法,規(guī)定所有用 戶都使用同一種前置通用數(shù)據(jù)庫語法,并且預(yù)先封裝好了從該前置通用數(shù)據(jù)庫語法的SQL 語句轉(zhuǎn)換到其他數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代碼,這樣,用戶或各種開發(fā)人員無需 了解實(shí)際需要的多種多樣的目標(biāo)數(shù)據(jù)庫類型的語法,只需要懂得并輸入一種前置通用數(shù)據(jù) 庫語法的SQL語句即可,則可以自動轉(zhuǎn)換為所需要的目標(biāo)數(shù)據(jù)庫類型的語法的SQL語句,因 此,大大提高了編碼的效率。
[0044] 在本發(fā)明一個實(shí)施例中,可以將SQLSERVER語法作為前置通用數(shù)據(jù)庫語法,由于 SQLSERVER語法可以具有諸多優(yōu)點(diǎn),比如圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直 觀、簡單;豐富的編程接口工具,為用戶進(jìn)行程序設(shè)計提供了更大的選擇余地;具有很好的 伸縮性等,因此,大大增加了本發(fā)明實(shí)施例業(yè)務(wù)的靈活性。
[0045] 以SQLSERVER語法作為前置通用數(shù)據(jù)庫語法,并通過全局函數(shù)實(shí)現(xiàn)為例,本發(fā)明 另一個實(shí)施例也提出了一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法,參見圖2,包括:
[0046] 步驟200 :創(chuàng)建全局函數(shù);
[0047] 本步驟中,以POWERBnLD開發(fā)工具為例,支持轉(zhuǎn)換的數(shù)據(jù)庫類型可以為ORACLE、 DB2等,則可以新建函數(shù)名稱為GSSQLTRANS。
[0048] 步驟201 :設(shè)置全局函數(shù)的入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語句的第一參數(shù)和 對應(yīng)目標(biāo)數(shù)據(jù)庫類型的第二參數(shù);以及設(shè)置輸出結(jié)果為轉(zhuǎn)換后的SQL語句;
[0049] 本步驟中,第一參數(shù)和第二參數(shù)可以如下表所示:
【主權(quán)項(xiàng)】
1. 一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法,其特征在于, 創(chuàng)建全局函數(shù)或者方法對象,設(shè)置入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語句的第一參數(shù) 和對應(yīng)目標(biāo)數(shù)據(jù)庫類型的第二參數(shù);以及設(shè)置輸出結(jié)果為轉(zhuǎn)換后的SQL語句; 在所述全局函數(shù)或所述全局方法內(nèi),封裝從前置通用數(shù)據(jù)庫語法的SQL語句到其他每 一個目標(biāo)數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代碼; 還包括: 調(diào)用所述全局函數(shù)或所述全局方法, 通過所述第一參數(shù),向所述全局函數(shù)或所述全局方法輸入符合所述前置通用數(shù)據(jù)庫語 法的當(dāng)前SQL語句; 通過所述第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當(dāng)前目標(biāo)數(shù)據(jù)庫類型; 執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全局方法輸出的當(dāng)前目 標(biāo)數(shù)據(jù)庫類型語法的SQL語句。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述目標(biāo)數(shù)據(jù)庫類型包括:Oracle, Sybase,MySql, DB2數(shù)據(jù)庫中的任意一個或多個。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第二參數(shù)包括多個值,通過三位字符 串表示不同的目標(biāo)數(shù)據(jù)庫類型; 所述通過所述第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當(dāng)前目標(biāo)數(shù)據(jù)庫類型包 括:在第二參數(shù)的三位字符串中分別攜帶多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型; 所述獲取當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的SQL語句包括:將當(dāng)前SQL語句分別轉(zhuǎn)換為多個 當(dāng)前目標(biāo)數(shù)據(jù)庫類型的語法的SQL語句,得到所述全局函數(shù)或所述全局方法分別輸出的對 應(yīng)于多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的多個SQL語句。
4. 根據(jù)權(quán)利要求1至3中任一所述的方法,其特征在于,所述前置通用數(shù)據(jù)庫語法為: SQLSERVER 語法。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,當(dāng)目標(biāo)數(shù)據(jù)庫類型包括ORACLE數(shù)據(jù)庫 時; 所述封裝從前置通用數(shù)據(jù)庫語法的SQL語句到其他每一個目標(biāo)數(shù)據(jù)庫類型語法的 SQL語句的轉(zhuǎn)換代碼包括:用字符替換函數(shù)將SQLSERVER語法中判斷是否為空的函數(shù)名稱 " ISNULL"替換為ORACLE數(shù)據(jù)庫語法中的"NVL"。
6. -種基于多數(shù)據(jù)庫類型的SQL執(zhí)行裝置,其特征在于,包括: 封裝單元,用于封裝有全局函數(shù)或者方法對象,該全局函數(shù)或者方法對象中封裝有從 前置通用數(shù)據(jù)庫語法的SQL語句到其他每一個目標(biāo)數(shù)據(jù)庫類型語法的SQL語句的轉(zhuǎn)換代 碼;該全局函數(shù)或者方法對象的入口參數(shù)包括對應(yīng)需要轉(zhuǎn)換的SQL語句的第一參數(shù)和對應(yīng) 目標(biāo)數(shù)據(jù)庫類型的第二參數(shù);該全局函數(shù)或者方法對象的輸出結(jié)果為轉(zhuǎn)換后的SQL語句; 交互單元,用于通過對所述第一參數(shù)的賦值,獲取向所述全局函數(shù)或所述全局方法輸 入的符合所述前置通用數(shù)據(jù)庫語法的當(dāng)前SQL語句;通過對所述第二參數(shù)的賦值,獲取向 所述全局函數(shù)或所述全局方法輸入的當(dāng)前目標(biāo)數(shù)據(jù)庫類型; 調(diào)用執(zhí)行單元,用于調(diào)用封裝單元中的所述全局函數(shù)或所述全局方法,根據(jù)所述交互 單元接收到的賦值,執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全局方 法輸出的當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的SQL語句。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述目標(biāo)數(shù)據(jù)庫類型包括:Oracle, Sybase,MySql, DB2數(shù)據(jù)庫中的任意一個或多個。
8. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述封裝單元所封裝的全局函數(shù)或所述 全局方法中,所述第二參數(shù)包括多個值,通過三位字符串表示不同的目標(biāo)數(shù)據(jù)庫類型; 所述交互單元,用于從對所述第二參數(shù)的賦值中,得到該第二參數(shù)的三位字符串中分 別攜帶的多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型; 所述調(diào)用執(zhí)行單元,用于根據(jù)所述交互單元得到的多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型,將當(dāng)前 SQL語句分別轉(zhuǎn)換為多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型的語法的SQL語句,得到所述全局函數(shù)或所 述全局方法分別輸出的對應(yīng)于多個當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的多個SQL語句。
9. 根據(jù)權(quán)利要求6至8中任一所述的裝置,其特征在于,所述前置通用數(shù)據(jù)庫語法為: SQLSERVER 語法。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,當(dāng)目標(biāo)數(shù)據(jù)庫類型包括ORACLE數(shù)據(jù)庫 時; 所述封裝單元,用于封裝用字符替換函數(shù)將SQLSERVER語法中判斷是否為空的函數(shù)名 稱" ISNULL"替換為ORACLE數(shù)據(jù)庫語法中的"NVL"的轉(zhuǎn)換代碼。
【專利摘要】本發(fā)明提供一種基于多數(shù)據(jù)庫類型的SQL執(zhí)行方法和裝置,該方法包括:調(diào)用全局函數(shù)或所述全局方法,通過第一參數(shù),向所述全局函數(shù)或所述全局方法輸入符合所述前置通用數(shù)據(jù)庫語法的當(dāng)前SQL語句;通過第二參數(shù),向所述全局函數(shù)或所述全局方法輸入當(dāng)前目標(biāo)數(shù)據(jù)庫類型;執(zhí)行所述全局函數(shù)或所述全局方法,獲取所述全局函數(shù)或所述全局方法輸出的當(dāng)前目標(biāo)數(shù)據(jù)庫類型語法的SQL語句。本發(fā)明能夠提高編碼效率。
【IPC分類】G06F17-30
【公開號】CN104615713
【申請?zhí)枴緾N201510060708
【發(fā)明人】張強(qiáng), 任艷青
【申請人】浪潮通用軟件有限公司
【公開日】2015年5月13日
【申請日】2015年2月5日