国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 信息時代 > SQL語言調用級接口(數據庫)

SQL語言調用級接口(數據庫)

時間:2022-11-07 14:30:01 | 來源:信息時代

時間:2022-11-07 14:30:01 來源:信息時代

    SQL語言調用級接口 : SQL標準的一個重要組成部分,標準編號為ISO/IEC 9075-3。該標準定義了在Ada、C、COBOL、FORTRAN、M、PASCAL、PL/I等高級語言中訪問SQL數據庫的API規(guī)范。在SQL:2008中,它的全名為: Information Technology—Database Languages—SQL—Part 3:Call-Level Interface(SQL/CLI)。
SQL/CLI最初來源于X/Open組織(后來更名為The Open Group)在1990年代初起制定的調用級接口標準(CLI),當時該標準主要為C和COBOL語言訪問數據庫的API做了定義。在SQL標準中,SQL/CLI部分最早是作為SQL:1992標準的附錄出現的。后來在ISO/IEC 9075-3:1995中正式成為標準的一部分,并一直存在于SQL:1999、SQL:2003等后續(xù)國際標準中?,F在被工業(yè)界廣泛采納的ODBC、JDBC等規(guī)范等也是以X/Open的CLI為基礎制定的。值得注意的是,ODBC的核心概念及定義和SQL/CLI 高度一致,甚至可以認為 ODBC是SQL/CLI的一種具體實現方式。從現有的產品來看,SQL/CLI本身在產品中得到的支持和實現遠遠不如同樣基于CLI發(fā)展出來的ODBC、JDBC等后起之秀。ODBC、JDBC等規(guī)范有微軟、Sun等領先廠商的大力推動,而且它們本身也和特定的編程語言和開發(fā)平臺綁定得比較緊密,相關編程語言和編程環(huán)境的推廣,大大促進了規(guī)范本身在產品中的實現。
SQL/CLI所定義的例程(routines)總數超過了60個。標準中采用例程而不是函數或過程來稱呼它們,是為了照顧到不同語言中函數和過程兩者之間的區(qū)別。SQL/CLI的例程可以分成以下幾類:
(1)資源的分配和釋放。
(2)到SQL服務器的連接。
(3)SQL語句的執(zhí)行和結果集的獲取。
(4)診斷信息的獲取。
(5)事務的控制。
(6)SQL/CLI以及SQL實現信息的獲取。
SQL/CLI中例程的名字因CLI本身針對的高級語言的不同或具體實現方法的不同而分為兩種形式: 一種以SQLR打頭,表示參數以引用的方式傳遞; 一種以SQL打頭,表示參數以值的方式傳遞。C語言支持的是值傳遞方式,因此針對C語言實現的CLI中例程的名字通常是以SQL打頭的,例如:SQLAllocHandle。類似的,ODBC中的API名稱也都是以SQL打頭的。在后面的描述中,為了簡便,將直接采用沒有SQLR或SQL打頭的名稱作為例程的名字。
句柄(Handle)是SQL/CLI中的一個重要概念。它表示SQL/CLI分配的資源,應用程序通過它引用SQL/CLI的資源。例程AllocHandle可以用于分配SQL環(huán)境、SQL連接、CLI描述符區(qū)、SQL語句處理等所需的資源。在被調用后,AllocHandle可以返回環(huán)境句柄、連接句柄、描述符句柄或語句句柄。例程FreeHandle被用來釋放句柄對應的資源。還可以采用AllocEnv、AllocConnect、AllocStmt分別分配環(huán)境句柄、連接句柄和語句句柄。類似地,也可以采用FreeEnv、FreeConnect、FreeStmt分別釋放環(huán)境句柄、連接句柄和語句句柄對應的資源。句柄的數據類型是INTEGER,無效句柄用0表示。
返回碼(Return code)是SQL/CLI中另一個重要的概念。在SQL/CLI例程執(zhí)行的過程中通過返回碼表示其執(zhí)行的狀態(tài)。其中取值0表示例程成功執(zhí)行(success)。取值1表示成功執(zhí)行,但是帶有警告信息(success with information)。取值100表示沒有獲得數據(no data found)。取值99表示需要數據(data needed)。取值1表示錯誤(error),說明例程沒有執(zhí)行成功。取值2表示無效的句柄(invalid handle)。除了返回碼以外,對于Error、GetDiagField、GetDiagRec之外的其他例程,SQL/CLI的實現都要在診斷區(qū)中記錄除了“無效句柄”之外的完成狀態(tài)和異常狀態(tài)。
診斷區(qū)(diagnostics area)記錄了例程執(zhí)行后的頭信息(一般性信息)以及0個或多個狀態(tài)記錄。除了Error、GetDiagField和GetDiagRec之外的例程在開始執(zhí)行時,都要清空其對應的診斷區(qū)。如果在例程的執(zhí)行過程中沒有出現“無效句柄”或“需要動態(tài)參數值”異常,則診斷區(qū)中包含了頭部信息。如果例程的返回碼是“成功”,則沒有任何狀態(tài)記錄。如果返回碼是“成功但有警告”或“錯誤”,則有一個或多個狀態(tài)記錄。如果返回碼是“沒有數據”,則在SQLSTATE是02000時,沒有狀態(tài)記錄,在SQLSTATE是02nnn(其中nnn是實現者定義的子類值)時,可能有狀態(tài)記錄。例程GetDiagField和GetDiagRec可以獲取診斷區(qū)中的信息。
CLI描述符區(qū)(CLI descriptor areas)記錄了動態(tài)參數的定義、動態(tài)參數的取值、SELECT語句的結果列的信息等。CLI描述符區(qū)由頭信息以及0個或多個項目描述符組成。例程 GetDescField和GetDescRec可以獲取描述符區(qū)中的信息。例程SetDescField和SetDescRec可以用于設置除了IRD之外的任何CLI描述符區(qū)信息。
SQL/CLI不僅定義了上述的一些基本概念,也對很多實現需要的細節(jié)、例程的具體定義做了詳盡的說明。它還要求具體的實現在定義模式的兩個基本表SQL_IMPLEMENTATION_INFO、SQL_SIZING中提供一些具體的信息項。標準的最后還明確定義了符合性的要求??紤]到ODBC的多數內容和SQL/CLI非常一致,而且ODBC的應用更為廣泛,讀者可以結合ODBC標準去深入理解SQL/CLI的各個部分。

74
73
25
news

版權所有? 億企邦 1997-2022 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉