編程環境下的SQL也稱嵌入式SQL(Embedded SQL, ESQL),是壹種將SQL語句直接寫入C、C++、JAVA等編程語言中的使用方式,從而讓應用程序擁有了訪問數據庫、操作數據的能力。這些嵌入SQL的語言稱為宿主語言。
為提供對嵌入式SQL的支持,數據庫廠商需要提供DBMS和壹些工具,並且在技術上必須解決以下4個問題:
宿主語言的編譯器不可能識別和接受SQL語言,所以需要解決如何將宿主語言源代碼中的SQL編譯成可執行碼;
宿主語言的應用程序如何與DBMS之間傳遞數據和消息;
如何把對數據的查詢結果逐次賦值給宿主語言程序中的變量,以供其處理;
有時,數據庫的數據類型與宿主語言的數據類型不完全對應或等價,如何解決必要的數據類型轉換問題;
為了解決以上問題,數據庫廠商采用兩種方法處理:壹種是預編譯;另壹種是修改和擴充宿主語言,使之能處理SQL語句。目前采用較多的是預編譯的方法。數據庫廠商需要提供壹個嵌入式SQL的預編譯器,對源程序進行掃描,識別出SQL語句,把它們轉換成主語言調用語句,以使宿主語言編譯程序能識別它,最後由主語言的編譯程序將整個源程序編譯成目標碼。