編程環(huán)境下的SQL也稱嵌入式SQL(Embedded SQL, ESQL),是一種將SQL語句直接寫入C、C++、JAVA等編程語言中的使用方式,從而讓應用程序擁有了訪問數(shù)據(jù)庫领铐、操作數(shù)據(jù)的能力。這些嵌入SQL的語言稱為宿主語言宋舷。
為提供對嵌入式SQL的支持绪撵,數(shù)據(jù)庫廠商需要提供DBMS和一些工具,并且在技術(shù)上必須解決以下4個問題:
- 宿主語言的編譯器不可能識別和接受SQL語言祝蝠,所以需要解決如何將宿主語言源代碼中的SQL編譯成可執(zhí)行碼音诈;
- 宿主語言的應用程序如何與DBMS之間傳遞數(shù)據(jù)和消息;
- 如何把對數(shù)據(jù)的查詢結(jié)果逐次賦值給宿主語言程序中的變量绎狭,以供其處理细溅;
- 有時,數(shù)據(jù)庫的數(shù)據(jù)類型與宿主語言的數(shù)據(jù)類型不完全對應或等價儡嘶,如何解決必要的數(shù)據(jù)類型轉(zhuǎn)換問題喇聊;
為了解決以上問題,數(shù)據(jù)庫廠商采用兩種方法處理:一種是預編譯蹦狂;另一種是修改和擴充宿主語言誓篱,使之能處理SQL語句朋贬。目前采用較多的是預編譯的方法。數(shù)據(jù)庫廠商需要提供一個嵌入式SQL的預編譯器窜骄,對源程序進行掃描锦募,識別出SQL語句,把它們轉(zhuǎn)換成主語言調(diào)用語句啊研,以使宿主語言編譯程序能識別它御滩,最后由主語言的編譯程序?qū)⒄麄€源程序編譯成目標碼鸥拧。