两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種特殊指令的執(zhí)行方法及裝置的制造方法_2

文檔序號:8318945閱讀:來源:國知局
施例,在實際應(yīng)用場景下,數(shù)據(jù)庫執(zhí)行SQL語句S6’后查詢到的對應(yīng)數(shù)據(jù)的示意圖;
[0046]圖7為依據(jù)本發(fā)明實施例的特殊語句的執(zhí)行裝置的示意圖。
【具體實施方式】
[0047]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0048]以下結(jié)合附圖,詳細(xì)說明本申請各實施例提供的技術(shù)方案。
[0049]圖1為依據(jù)本發(fā)明實施例的特殊指令的執(zhí)行方法的示意圖,其可應(yīng)用于耦接在數(shù)據(jù)庫與客戶端之間的中間件,所述方法可以包括步驟:
[0050]SlOl:發(fā)送特殊指令,并記錄與該特殊指令對應(yīng)的相關(guān)信息。
[0051]其中,該相關(guān)信息包括:發(fā)送該特殊指令所使用連接的標(biāo)識,和/或該特殊指令包含的模板指令。
[0052]S102:接收該特殊指令的匹配指令。
[0053]S103:根據(jù)記錄的該相關(guān)信息,采用預(yù)設(shè)的與所述相關(guān)信息對應(yīng)的發(fā)送方式,將該匹配指令發(fā)送給數(shù)據(jù)庫執(zhí)行。
[0054]從上述可知,依據(jù)該實施例,中間件發(fā)送特殊指令,并記錄與該特殊指令對應(yīng)的相關(guān)信息,即,中間件每發(fā)送一條特殊指令,都會記錄與該特殊指令對應(yīng)的相關(guān)信息,該相關(guān)信息用于確定該特殊指令的匹配指令的發(fā)送方式,因此,針對不同類型的特殊指令,記錄的相關(guān)信息也不同,對于某一類特殊指令,記錄的相關(guān)信息為發(fā)送該特殊指令所使用連接的標(biāo)識,對于另一類特殊指令,記錄的相關(guān)信息為該特殊指令包含的模板指令。后續(xù)當(dāng)中間件接收到該特殊指令的匹配指令時,則根據(jù)記錄的相關(guān)信息,采用預(yù)設(shè)的與該相關(guān)信息對應(yīng)的發(fā)送方式,將該匹配指令發(fā)送給數(shù)據(jù)庫執(zhí)行,由于針對每一類特殊指令,中間件都預(yù)先設(shè)置了該特殊指令的匹配指令的發(fā)送方式,使數(shù)據(jù)庫能夠正確識別通過該發(fā)送方式發(fā)送的匹配指令,因此,數(shù)據(jù)庫能夠正確執(zhí)行該匹配指令。
[0055]依據(jù)本發(fā)明的一個實施例,由于對于某些特殊指令而言,數(shù)據(jù)庫執(zhí)行特殊指令后,會針對發(fā)送該特殊指令所使用的連接,識別后續(xù)從該連接發(fā)送來的該特殊指令的匹配指令,因此,中間件發(fā)送特殊指令后,記錄的與該特殊指令對應(yīng)的相關(guān)信息可以為發(fā)送該特殊指令所使用連接的標(biāo)識。當(dāng)中間件后續(xù)從該客戶端接收到該特殊指令的匹配指令時,則中間件將該匹配指令通過與記錄的標(biāo)識對應(yīng)的連接發(fā)送給數(shù)據(jù)庫執(zhí)行。
[0056]具體的,當(dāng)記錄的與該特殊指令對應(yīng)的相關(guān)信息為發(fā)送該特殊指令所使用連接的標(biāo)識時,中間件接收該特殊指令的匹配指令后,根據(jù)記錄的發(fā)送該特殊指令所使用連接的標(biāo)識可確定之前發(fā)送特殊指令時所使用的連接,然后,將該匹配指令通過該連接發(fā)送給數(shù)據(jù)庫執(zhí)行。這樣,由于中間件發(fā)送特殊指令及其后續(xù)的匹配指令都是通過同一個連接發(fā)送給數(shù)據(jù)庫的,因此,數(shù)據(jù)庫可根據(jù)該同一個連接,正確的識別出該匹配指令,從而可正確的執(zhí)行該匹配指令。
[0057]進(jìn)一步的,依據(jù)本發(fā)明的一個實施例,當(dāng)中間件發(fā)送特殊指令,且記錄的與該特殊指令對應(yīng)的相關(guān)信息為發(fā)送該特殊指令所使用連接的標(biāo)識時,在中間件發(fā)送特殊指令之后,中間件還可為數(shù)據(jù)庫和客戶端保持發(fā)送該特殊指令所使用的連接,也即,中間件將特殊指令通過一個連接發(fā)送給數(shù)據(jù)庫后,并不回收該連接,也不將該連接分配給其它的客戶端使用,因此,當(dāng)中間件后續(xù)接收到該特殊指令的匹配指令時,可直接使用該連接發(fā)送該匹配指令,提高了中間件發(fā)送匹配指令的效率。
[0058]依據(jù)本發(fā)明的一個實施例,當(dāng)中間件發(fā)送特殊指令,且記錄的與該特殊指令對應(yīng)的相關(guān)信息為發(fā)送該特殊指令所使用連接的標(biāo)識時,所述的指令為SQL語句形式的指令,該特殊指令可為BEGIN語句(BEGIN語句,也即,數(shù)據(jù)庫事務(wù)中的BEGIN TRANSCAT1N語句)或PREPARE語句。
[0059]具體的,當(dāng)特殊指令為BEGIN語句時,則該特殊指令的匹配指令為與該BEGIN語句屬于同一個數(shù)據(jù)庫事務(wù)的語句,如COMMIT語句、ROLLBACK語句等。
[0060]下面針對數(shù)據(jù)庫事務(wù)進(jìn)行說明:
[0061]一個數(shù)據(jù)庫事務(wù)包含有多條SQL語句。一個數(shù)據(jù)庫事務(wù)以BEGIN語句開始,中間可包含若干語句,當(dāng)BEGIN語句和中間的語句都成功執(zhí)行時,可用COMMIT語句提交該數(shù)據(jù)庫事務(wù)中已完成的操作,當(dāng)中間有語句執(zhí)行失敗或該數(shù)據(jù)庫事務(wù)不能繼續(xù)執(zhí)行時,可用ROLLBACK語句回滾該數(shù)據(jù)庫事務(wù),也即,撤銷該數(shù)據(jù)庫事務(wù)中已完成但尚未提交的操作,顯然,一個數(shù)據(jù)庫事務(wù)會以COMMIT語句或ROLLBACK語句結(jié)束。
[0062]由于在數(shù)據(jù)庫中可同時執(zhí)行多個數(shù)據(jù)庫事務(wù),為了不混淆各個數(shù)據(jù)庫事務(wù),數(shù)據(jù)庫使用連接標(biāo)識(Identity,ID)對一個數(shù)據(jù)庫事務(wù)的所有語句進(jìn)行標(biāo)識,其中,該連接標(biāo)識為發(fā)送該數(shù)據(jù)庫事務(wù)的語句所使用連接的連接ID。若中間件發(fā)送數(shù)據(jù)庫事務(wù)的某條語句與發(fā)送該數(shù)據(jù)庫事務(wù)的其它語句使用了不同連接,則數(shù)據(jù)庫認(rèn)為該條語句與該其它語句屬于不同的數(shù)據(jù)庫事務(wù),并分別用對應(yīng)的不同連接ID對其標(biāo)識,因此,每個連接ID標(biāo)識的數(shù)據(jù)庫事務(wù)的語句均不完整,導(dǎo)致數(shù)據(jù)庫無法正確執(zhí)行該數(shù)據(jù)庫事務(wù)中的語句。
[0063]根據(jù)上述說明,數(shù)據(jù)庫是根據(jù)連接識別同一個數(shù)據(jù)庫事務(wù)中的語句,因此,需要將同一個數(shù)據(jù)庫事務(wù)所有語句通過相同連接發(fā)送。則當(dāng)中間件記錄的相關(guān)信息為發(fā)送特殊指令所使用連接的連接ID,且該特殊指令為BEGIN語句時,在圖1所示的步驟SlOl?S103中,中間件發(fā)送BEGIN語句,并記錄發(fā)送該BEGIN語句所使用連接的連接ID,當(dāng)后續(xù)接收到與該BEGIN語句屬于同一個數(shù)據(jù)庫事務(wù)的其它語句,如COMMIT語句、ROLLBACK語句等時,將該其它語句通過記錄的連接ID所標(biāo)識的連接發(fā)送給數(shù)據(jù)庫執(zhí)行,則數(shù)據(jù)庫可正確執(zhí)行該其它語句。
[0064]下面針對PREPARE語句、EXECUTE語句和DEALLOCATE語句進(jìn)行說明:
[0065]當(dāng)特殊指令為PREPARE語句時,該特殊指令的匹配指令為EXE⑶TE語句或DEALLOCATE 語句(DEALLOCATE 語句,也即,DEALLOCATE PREPARE 語句),其中,該 PREPARE語句中包含有模板語句(模板語句,也即,模板指令),以及該模板語句的聲明名稱,該EXE⑶TE語句和該DEALLOCATE語句中也包含有該模板語句的聲明名稱。
[0066]PREPARE語句預(yù)聲明了一個模板語句、該模板語句的聲明名稱,以及該模板語句的待定參數(shù)(該模板語句也可不包含待定參數(shù))。當(dāng)數(shù)據(jù)庫執(zhí)行PREPARE語句時,針對每一個PREPARE語句,會為該PREPARE語句保存一組內(nèi)容,并采用發(fā)送該PREPARE語句所使用連接的連接ID對該組保存內(nèi)容進(jìn)行標(biāo)識,其中,該組保存內(nèi)容包括:該PREPARE語句中包含的模板語句、該模板語句的聲明名稱、該模板語句的待定參數(shù)。
[0067]EXE⑶TE語句包含了模板語句的聲明名稱,以及模板語句的參數(shù)值。當(dāng)數(shù)據(jù)庫執(zhí)行EXE⑶TE語句時,會根據(jù)發(fā)送該EXE⑶TE語句所使用連接的連接ID查詢該連接ID對應(yīng)的PREPARE語句的保存內(nèi)容,并將查詢到的各組保存內(nèi)容中的模板語句的聲明名稱與該EXECUTE語句中包含的模板語句的聲明名稱進(jìn)行比較,若某組保存內(nèi)容中的模板語句的聲明名稱與該EXE⑶TE語句中包含的聲明名稱相同,則根據(jù)該EXE⑶TE語句包含的參數(shù)值為該組保存內(nèi)容中的模板語句的待定參數(shù)賦值,并執(zhí)行賦值后的該模板語句。
[0068]DEALLOCATE語句包含了模板語句的聲明名稱。當(dāng)數(shù)據(jù)庫執(zhí)行DEALLOCATE語句時,會根據(jù)發(fā)送該DEALLOCATE語句所使用連接的連接ID查詢該連接ID對應(yīng)的PREPARE語句的保存內(nèi)容,并將查詢到的各組保存內(nèi)容中的模板語句的聲明名稱與該DEALLOCATE語句中包含的模板語句的聲明名稱相同進(jìn)行比較,若某一組保存內(nèi)容中的模板語句的聲明名稱與該EXE⑶TE語句中包含的模板語句的聲明名稱相同,則刪除該組保存內(nèi)容。
[0069]根據(jù)上述說明,數(shù)據(jù)庫是根據(jù)連接識別PREPARE語句,以及對應(yīng)的EXE⑶TE語句和DEALLOCATE語句的。若中間件發(fā)送PREPARE語句與發(fā)送對應(yīng)的EXECUTE或DEALLOCATE語句使用了不同連接,則數(shù)據(jù)庫根據(jù)發(fā)送該對應(yīng)的EXE⑶TE或DEALLOCATE語句所使用連接的連接ID,就不能查詢到使用另一個連接ID標(biāo)識的該PREPARE語句對應(yīng)的保存內(nèi)容,從而數(shù)據(jù)庫不能正確執(zhí)行該對應(yīng)的EXECUTE或DEALLOCATE語句。
當(dāng)前第2頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
佛学| 巴马| 呈贡县| 宿州市| 康保县| 陵水| 科技| 从江县| 兴安县| 景泰县| 淳安县| 临安市| 蚌埠市| 白河县| 平南县| 清水河县| 北碚区| 灵寿县| 荆门市| 睢宁县| 平山县| 永嘉县| 罗定市| 大宁县| 老河口市| 陆河县| 城口县| 铜梁县| 宜黄县| 治县。| 龙胜| 五原县| 上思县| 于田县| 茶陵县| 定安县| 夏邑县| 庐江县| 恩施市| 广丰县| 甘肃省|