通過嵌套SQL的宿主語言
通過應用程序接口,允許將SQL查詢傳給數據庫
ODBC、JDBC
其他:如RDO,ADO和OLEDB這些接口目前並不能代替ODBC
補充ODBC
Open Database Connectivity
它是一種用來在相關或不相關的數據庫管理系統(DBMS)中存取數據的,用C語言實現的、標准應用程序數據接口。
通過ODBC API,應用程序可以存取保存在多種不同數據庫管理系統(DBMS)中的數據,而不論每個DBMS使用了何種數據存儲格式和編程接口。
JDBC
是一種可用於執行SQL語句的Java API。它由一些Java語言編寫的類和界面組成。
DBC為數據庫應用開發人員,數據庫前台工具開發人員提供了一種標准的應用程序設計接口,使開發人員可以用純Java語言編寫完整的數據庫應用程序。
嵌入式SQL
將SQL嵌入到某種高級語言(又稱主語言)中使用,利用高級語言的過程性結構來彌補SQL實現的復雜應用方面的不足
SQL語句負責操縱數據庫,主語言語句負責控制程序流程
嵌入式SQL的一般形式
EXEC SQL前綴用以區分SQL語句與主語言語句
EXEC SQL <SQL語句>;
DBMS多采用預編譯方式處理宿主語言SQL
嵌入式SQL語句包括
說明性語句
可執行語句:數據定義、數據控制、數據操縱
與主語句之間的通信
數據庫工作單元與源程序工作單元如何通信?
(1)用SQL通信區向主語言傳遞SQL語句執行狀態信息
(2)主語言通過主變量向SQL語句提供參數
(3)SQL語句查詢數據庫的結果通過主變量和游標交主語言進一步處理
游標
SQL語言是集合處理的方式,主語言是單記錄處理方式,如何協調?
引入游標
游標是系統為用戶開設的一個數據緩沖區,存放SQL語句的執行結果
每個游標區都有一個名字
用戶通過游標逐一獲取記錄,並賦給主變量,交主語言進一步處理
游標的使用
說明游標
EXEC SQL DECLARE <游標名> CURSOR FOR <SELECT語句>;
打開游標
EXEC SQL OPEN<游標名>;
推進游標並獲取當前記錄(通常在循環結構中使用)
EXEC SQL FETCH <游標名> INTO <主變量> [,<主變量>]...;
關閉游標
EXEC SQL CLOSE <游標名>