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

正文內(nèi)容

db2數(shù)據(jù)庫對象基礎知識-文庫吧

2025-06-13 08:14 本頁面


【正文】 9。)。COMMIT。INSERT INTO t1 VALUES (NEXTVAL FOR myseq, 39。GENE39。)。ROLLBACK。INSERT INTO t1 VALUES (NEXTVAL FOR myseq, 39。PAUL39。)。VALUES PREVVAL FOR myseq INTO :hostvar假設我們以一個空表 t1 開始,myseq 的下一個序列值是 1。如果禁用了 automit,則在執(zhí)行上述語句之后,t1 將包含下面幾行:1 NAME 1 BOB2 PAT4 PAUL 3 record(s) selected.雖然為 GENE 生成的值被回滾了,但是 DB2 并沒有再次使用它。因而,下一個為 PAUL 生成的序列值就是 4,而不是 3。 這個例子中的最后一條語句展示了如何使用 PREVVAL 表達式。宿主變量 :hostvar 存儲當前會話中生成的最后一個值。如果想保存前面生成的值,那么應該在生成下一個值之前保存 PREVVAL 值。臨時表 顧名思義,臨時表(temporary table)不是永久性的數(shù)據(jù)庫對象。臨時表與普通的表在行為上是一樣的,不同之處是,并非所有的功能和選項都是受支持的和/或是必需的。臨時表只能維持在一次連接期間。當連接關閉時,在此連接內(nèi)聲明的所有臨時表都將自動刪除掉。 只有聲明臨時表的會話或應用程序才能訪問臨時表。如果兩個應用程序用相同的名字創(chuàng)建了一個臨時表,該臨時表的每個實例仍然是惟一的。因而,完全不必擔心出現(xiàn)臨時數(shù)據(jù)沖突的情況。由于臨時表只允許單連接(singleconnection)訪問,因此這里無需使用鎖。這正是臨時表的一個主要的性能優(yōu)勢。聲明臨時表 要聲明一個臨時表,必須存在一個 USER 臨時表空間(不同于 SYSTEM 臨時表空間),用以存儲臨時表的定義和內(nèi)容。SYSTEM 臨時表空間只是 DB2 在內(nèi)部用來執(zhí)行諸如排序之類操作的。下面這條簡單的語句將創(chuàng)建一個用戶臨時表空間。CREATE USER TEMPORARY TABLESPACE usertempspace MANAGED BY SYSTEM USING (39。usertempspace39。)聲明全局臨時表時,可以使用很多可選子句。下面的例子對這些子句的特性作了說明。DECLARE GLOBAL TEMPORARY TABLE t_dept ( deptid CHAR(6), deptname CHAR(20) )ON COMMIT DELETE ROWS NOT LOGGEDIN usertempspace在這個例子中,聲明了臨時表 t_dept,這個表有兩列。ON COMMIT DELETE ROWS 子句規(guī)定在每次執(zhí)行 COMMIT 操作時刪除臨時表的內(nèi)容。在 DB2 V8 中,可以選擇記錄對臨時表的更改,以便回滾。這個例子規(guī)定對該表的更改是 NOT LOGGED。這意味著對該表的任何操作,包括創(chuàng)建以及更改,都不做日志記錄。如果在一個工作單位內(nèi)創(chuàng)建表,然后回滾,則臨時表將被刪除。另一方面,如果在此工作單位內(nèi)刪除該表,則該表在恢復時將沒有任何行。無需使用 IN 子句來指定該臨時表將要使用的用戶臨時表空間。如果沒有指定該信息,DB2 就會搜索最適用的表空間。如果找不到用戶臨時表空間,DB2 將產(chǎn)生一個錯誤。讓我們看看另一個例子:DECLARE GLOBAL TEMPORARY TABLE t_proj LIKE project ON COMMIT PRESERVE ROWS WITH REPLACE IN usertempspace臨時表 t_proj 是用 LIKE 關鍵字聲明的,因此它擁有與名為 project 的持久表或視圖相同的列定義。ON COMMIT PRESERVE ROWS 子句表明,在執(zhí)行 COMMIT 語句時,該臨時表中的所有行都將被保留。因此,這些行就可以在下一次事務中用于進一步的處理。在同一次會話中使用相同的名稱聲明另一個臨時表之前,首先必須刪除該臨時表??梢燥@式地刪除該表,也可以像這里一樣使用 WITH REPLACE 選項。如果使用了 WITH REPLACE 選項,DB2 將隱式地刪除所有數(shù)據(jù),刪除該臨時表,并用新的定義重新創(chuàng)建該臨時表。如果使用了 連接池(connection pooling),WITH REPLACE 選項用起來就十分方便了。連接池是用于重用數(shù)據(jù)庫連接的一種機制,這樣就不必完全按照要求分配和回收資源。這些操作的開銷都是相當大的,尤其是在有大量執(zhí)行很短事務的連接時,更是如此。由于沒有釋放連接,先前使用的臨時表就可能得不到清除。下一個使用該連接的應用程序就可能使用上一次執(zhí)行時遺留下來的數(shù)據(jù)。因此,使用 WITH REPLACE 選項可以保證用新的定義刷新所聲明的臨時表。模式與數(shù)據(jù)庫對象 大多數(shù)數(shù)據(jù)庫對象都是用一個 模式(schema) 和一個 對象名(object name)標識的。數(shù)據(jù)庫模式為數(shù)據(jù)庫對象提供邏輯上的分類。下面例釋了這種分為兩部分的對象名: 如果在訪問數(shù)據(jù)庫對象時沒有指定模式,則用于建立數(shù)據(jù)庫連接的用戶 ID 將被設為缺省的模式。例如,如果用戶 db2admin 連接到一個數(shù)據(jù)庫,并創(chuàng)建表 T1,則 DB2 將創(chuàng)建一個名為 的表。此后所有引用非全限定(unqualified)表名 T1 的 SQL 語句都解析為 。DB2 專用寄存器:CURRENT SCHEMA 您在進行自己的數(shù)據(jù)庫工作時可能已經(jīng)發(fā)現(xiàn),用同為對象的模式的用戶 ID 連接到一個數(shù)據(jù)庫并非總是可行的。而硬編碼(hardcoding)應用程序以完全限定對象也不是最好的解決辦法。幸運的是,DB2 允許使用 SET CURRENT SCHEMA 命令更改當前模式。缺省情況下,CURRENT SCHEMA DB2 專用寄存器被設置為連接到數(shù)據(jù)庫的 USER。如果更改 CURRENT SCHEMA,那么任何非全限定的數(shù)據(jù)庫對象都會在前面加上新的值。當前模式可以通過下面這個命令獲得:VALUES CURRENT SCHEMA要對它進行更改,只需使用下面的命令:SET SCHEMA=db2adminDB2應用程序開發(fā)數(shù)據(jù)庫對象例程 在本節(jié)中,我們將介紹更多類型的數(shù)據(jù)庫對象。這些對象統(tǒng)統(tǒng)都叫做 例程(routine)。從功能上分,主要有三種例程:存儲過程(stored procedure)、函數(shù)(function)和方法(method)。(要了解這些類型之間的更多不同之處,請參閱 存儲過程、函數(shù)和方法。)例程是封裝了與某一特定任務
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1