freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

db2數(shù)據(jù)庫對象基礎知識(已改無錯字)

2022-07-26 08:14:33 本頁面
  

【正文】 b, deptname FROM org WHERE deptnumb = 40。 /* open cursor */ EXEC SQL OPEN c1。 /* fetch cursor */ EXEC SQL FETCH c1 INTO :deptnumb, :deptname。 while ( != 100) { printf( %8d %14s\n, deptnumb, deptname)。 EXEC SQL FETCH c1 INTO :deptnumb, :deptname。 } /* close cursor */ EXEC SQL CLOSE c1。 /* prepare the statement */ strcpy(hostVarStmt, DELETE FROM org WHERE deptnumb = 15)。 EXEC SQL PREPARE Stmt FROM :hostVarStmt。 /* execute the statement */ EXEC SQL EXECUTE Stmt。 /* ROLLBACK the transaction */ EXEC SQL ROLLBACK。 return 0。}靜態(tài) SQL 在前一小節(jié)中,我們演示了兩種不同類型的嵌入式 SQL 語句:靜態(tài)嵌入式 SQL 和動態(tài)嵌入式 SQL。這個例子中的 SELECT 語句說明了靜態(tài) SQL 的使用。編寫靜態(tài) SQL 時,必須指定完整的語句。表名、列名以及所引用的數(shù)據(jù)類型都是已知的。惟一可以在運行時指定的信息是使用宿主變量的 SQL 語句的 WHERE 子句中的值。編譯靜態(tài) SQL 語句(或者,用 DB2 術語更確切地說,準備好的(prepared)SQL 語句)時,將為其生成數(shù)據(jù)訪問計劃,并存儲在數(shù)據(jù)庫中的一個包里面。當調(diào)用包含該語句的應用程序時,這個包將被執(zhí)行。由于在運行時不需要編譯語句,因此執(zhí)行靜態(tài) SQL 時沒用編譯開銷。在準備語句時,DB2 使用數(shù)據(jù)庫統(tǒng)計信息和配置參數(shù)來估計和獲得訪問計劃。如果數(shù)據(jù)庫統(tǒng)計信息有變化,則預先生成的訪問計劃可能不如一開始生成時那樣是最佳的。創(chuàng)建包和將包與數(shù)據(jù)庫綁定時,要對準備靜態(tài) SQL 語句的人進行授權(quán)。只要執(zhí)行包的人擁有包的 EXECUTE 權(quán)限,他就不需要具備該包中所引用的數(shù)據(jù)庫對象上的顯式的權(quán)限。動態(tài) SQL 動態(tài)(Dynamic SQL) 語句是在運行時動態(tài)處理的。語句的結(jié)構(gòu)直到執(zhí)行應用程序時才需要。注意,嵌入式 SQL 簡介 中展示的例子 SQL 語句使用動態(tài) SQL 來 PREPARE 和 EXECUTE 一條 DELETE 語句。DELETE 語句的文本存儲在一個宿主變量 hostVarStmt 中。當該語句 PREPARE 好后,系統(tǒng)將生成該語句的一個可執(zhí)行格式,并將其存儲在數(shù)據(jù)庫中的一個包里面。一旦生成了數(shù)據(jù)訪問計劃,準備好的語句就可以 EXECUTE 了。聽起來好像有點熟悉,不是嗎?是的:這兩個處理階段與靜態(tài) SQL 語句正好是一樣的。惟一的不同點是,動態(tài) SQL 的 PREPARE 和 EXECUTE 都是在運行時進行,而靜態(tài) SQL 在預編譯時準備訪問計劃,并將其保存在數(shù)據(jù)庫中。動態(tài) SQL 語句必須總是在執(zhí)行之前準備好,不管是否有相同的語句(相同的訪問計劃)一次又一次地重復使用。為了最小化這些準備工作的開銷,DB2 提供了 包緩存(也叫 動態(tài)查詢緩存),用以將經(jīng)常使用的訪問計劃保存在內(nèi)存中。包緩存(package cache)明顯地減少了重復的 SQL 準備請求的代價,然而發(fā)起和響應準備請求的開銷仍然存在。在準備語句時,總是使用當前數(shù)據(jù)庫統(tǒng)計信息。因此,就可以生成最佳的數(shù)據(jù)訪問路徑。SQL 語句的授權(quán)是在運行時決定的。執(zhí)行應用程序的人必須有適當?shù)臋?quán)限來訪問語句中所引用的數(shù)據(jù)庫對象。下一小節(jié)將更詳細地討論 DB2 權(quán)限。安全考慮 要預編譯嵌入式靜態(tài) SQL 程序,用戶需要程序中所引用數(shù)據(jù)庫對象的顯式的權(quán)限。由于預編譯或 PREPARE 階段會生成一個包,并將其存儲在數(shù)據(jù)庫中,因此該用戶還必須擁有 BINDADD 權(quán)限,以便添加新的包到數(shù)據(jù)庫中。為了執(zhí)行帶有靜態(tài) SQL 的程序,用戶只需具有相關包上的 EXECUTE 權(quán)限。編譯嵌入式動態(tài) SQL 程序的用戶也需要 BINDADD 權(quán)限。這里不再需求其他的權(quán)限,因為動態(tài) SQL 不是在編譯時準備的。在程序執(zhí)行時,用戶需要所有必需的權(quán)限來發(fā)出每條 SQL 語句,同時還需要為嵌入式 SQL 程序創(chuàng)建的包上的 EXECUTE 權(quán)限。下面的表總結(jié)了預編譯和執(zhí)行一個只有靜態(tài) SQL 或只有動態(tài) SQL 的程序所需的權(quán)限。 靜態(tài) SQL 與動態(tài) SQL在下面的表中,讓我們總結(jié)并詳細闡述我們所學到的關于靜態(tài) SQL 和動態(tài) SQL 的知識:基于驅(qū)動程序的 API基于驅(qū)動程序的 API雖然大多數(shù)供應商都支持嵌入式 SQL 數(shù)據(jù)庫訪問,但如果您想要使用同樣的源代碼,并將嵌入式 SQL 應用程序部署到多個數(shù)據(jù)庫系統(tǒng)上,那么還需要一個額外的工作。必須用不同供應商的特定的預編譯器預編譯程序。還必須生成數(shù)據(jù)訪問計劃,并綁定到目標數(shù)據(jù)庫。為了增加應用程序的可移植性,還應考慮使用本節(jié)介紹的 基于驅(qū)動程序的解決方案。基于驅(qū)動程序的解決方案需要一個驅(qū)動程序管理器(driver manager),這是與應用程序打交道的界面。驅(qū)動程序管理器提供了一套工業(yè)標準的應用程序編程接口(API),用于訪問數(shù)據(jù)源。應用程序調(diào)用這些 API,然后被編譯,再與管理器的庫鏈接。因為驅(qū)動程序遵從標準,所以應用程序可以很容易地使用(或裝載)正確的驅(qū)動程序來訪問不同供應商的數(shù)據(jù)源。 在下面幾小節(jié)中,我們將看看 DB2 支持的一些 API。在本系列后面的教程中,您將更詳細地了解這些 API。CLI 和 ODBC API DB2 Call Level Interface (CLI) 是 IBM 對 DB2 數(shù)據(jù)庫服務器的可調(diào)用 SQL 接口。CLI 是用于數(shù)據(jù)訪問的一個 C/C++ 應用程序編程接口(API)。您可以使用 DB2 CLI 開發(fā)動態(tài)應用程序,就像使用嵌入式動態(tài) SQL 語句進行開發(fā)一樣。在這兩種情況下,SQL 語句都是在運行時準備和處理的。嵌入式動態(tài) SQL 要求有一個預編譯器,而 DB2 CLI 則沒有這種要求。您只需編譯應用程序,并與 DB2 CLI 驅(qū)動程序庫鏈接。DB2 CLI 是基于 Microsoft Open Database Connectivity (ODBC) 和 X/Open CLI 標準的。在 ODBC 環(huán)境中,應用程序與數(shù)
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1