編程環(huán)境下的SQL是如何編譯和執(zhí)行的

編程環(huán)境下的SQL也稱嵌入式SQL(Embedded SQL, ESQL),是一種將SQL語句直接寫入C、C++、JAVA等編程語言中的使用方式,從而讓應(yīng)用程序擁有了訪問數(shù)據(jù)庫、操作數(shù)據(jù)的能力。這些嵌入SQL的語言稱為宿主語言。

為提供對嵌入式SQL的支持,數(shù)據(jù)庫廠商需要提供DBMS和一些工具,并且在技術(shù)上必須解決以下4個(gè)問題:

  1. 宿主語言的編譯器不可能識別和接受SQL語言,所以需要解決如何將宿主語言源代碼中的SQL編譯成可執(zhí)行碼;
  2. 宿主語言的應(yīng)用程序如何與DBMS之間傳遞數(shù)據(jù)和消息;
  3. 如何把對數(shù)據(jù)的查詢結(jié)果逐次賦值給宿主語言程序中的變量,以供其處理;
  4. 有時(shí),數(shù)據(jù)庫的數(shù)據(jù)類型與宿主語言的數(shù)據(jù)類型不完全對應(yīng)或等價(jià),如何解決必要的數(shù)據(jù)類型轉(zhuǎn)換問題;

為了解決以上問題,數(shù)據(jù)庫廠商采用兩種方法處理:一種是預(yù)編譯;另一種是修改和擴(kuò)充宿主語言,使之能處理SQL語句。目前采用較多的是預(yù)編譯的方法。數(shù)據(jù)庫廠商需要提供一個(gè)嵌入式SQL的預(yù)編譯器,對源程序進(jìn)行掃描,識別出SQL語句,把它們轉(zhuǎn)換成主語言調(diào)用語句,以使宿主語言編譯程序能識別它,最后由主語言的編譯程序?qū)⒄麄€(gè)源程序編譯成目標(biāo)碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容