Oracle中幾個(gè)限制的說(shuō)明
Oracle中幾個(gè)限制的說(shuō)明:
1、IN 子句中的LIST個(gè)數(shù)最長(zhǎng)為1000,超過(guò)該數(shù)目將報(bào)錯(cuò),這里可轉(zhuǎn)用一個(gè)臨時(shí)表來(lái)解決;
2、CREATE TRIGGER語(yǔ)句文本的字符長(zhǎng)度不能超過(guò)32KB(觸發(fā)器中不能使用LONG, LONG RAW 類型;觸發(fā)器內(nèi)可以參照LOB 類型列的列值,但不能通過(guò) :NEW 修改LOB列中的數(shù)據(jù);)順便說(shuō)一下,觸發(fā)器中的PARENT關(guān)鍵字,只在嵌套表觸發(fā)器中有效,
3、11G以前,DBMS_SQL對(duì)輸入的SQL長(zhǎng)度不能超過(guò)32K,原因是輸入?yún)?shù)只能是VARCHAR2類型,11G后,可以用CLOB作為輸入?yún)?shù),則取消了這個(gè)限制
4、一個(gè)PL/SQL的包、過(guò)程、函數(shù)、觸發(fā)器的大小,在UNIX上最大是64K,而WINDOWS則是32K大小(32K這個(gè)應(yīng)該不準(zhǔn),看下面的測(cè)試)
5、SQL語(yǔ)句可以有多長(zhǎng)?(網(wǎng)友說(shuō))ORACLE文檔說(shuō)是64K,實(shí)際受一些工具的限制會(huì)較這個(gè)值低,但網(wǎng)友測(cè)試發(fā)現(xiàn)可以很長(zhǎng),甚至超過(guò)1M(我測(cè)試過(guò)170K的都沒(méi)問(wèn)題)。具體多長(zhǎng),10G也未說(shuō)明,只是與很多環(huán)境有關(guān):數(shù)據(jù)庫(kù)配置,磁盤空間,內(nèi)存多少。。。,實(shí)際上本人在用PL/SQL中測(cè)試發(fā)現(xiàn):
(PL/SQL中,表達(dá)式/SQL本身的長(zhǎng)度是可以達(dá)到比較長(zhǎng)的長(zhǎng)度(50K)左右,如:v_str:=:new.f1||:ndw.f2。。。 ; select :new.f1||:new.f2。。。 into v_str from dual; 另外發(fā)現(xiàn),如果這樣寫:v_str := ‘a’||’b’||。。。則允許的表達(dá)式長(zhǎng)度將大大的減少。如果表達(dá)式/SQL過(guò)長(zhǎng),超過(guò)了一個(gè)ORACLE包/過(guò)程允許的最大程序長(zhǎng)度,則在編譯時(shí)報(bào)pls-123:program too large錯(cuò)誤,這是pl/sql編譯器本身的限制造成的,即表達(dá)式/SQL的長(zhǎng)度在PL/SQL中受限于包/過(guò)程的最大大小 )
通過(guò)本文的講解,現(xiàn)在大家對(duì)Oracle數(shù)據(jù)庫(kù)中的限制已經(jīng)有了大體的了解,希望大家在以后的Oracle數(shù)據(jù)庫(kù)操作過(guò)程中要特別注意上文中講到的問(wèn)題,以免給大家的工作帶來(lái)不必要的麻煩。
【編輯推薦】




















