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

正文內(nèi)容

oracleplsql開(kāi)發(fā)基礎(chǔ)-文庫(kù)吧資料

2024-09-05 16:04本頁(yè)面
  

【正文】 ,但是這個(gè)記錄只能使用標(biāo)量數(shù)據(jù)類型字段以及只用于數(shù)據(jù)庫(kù)的數(shù)據(jù)類型(不能是 PLS_INTEGER,BOOLEAN 或 SIGNTYPE) 。使用 TYPE 語(yǔ)句,只是沒(méi)有 INDEX BY BINARY_INTEGER 子串。 symbol_tab symbol_tab_typ。其他的集合類型對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)類型都有限制,但 Index_by 表不能存儲(chǔ)在數(shù)據(jù)庫(kù)中,所以沒(méi)有這些限制。INDEX BY key_type。Index_by 表不能存儲(chǔ)在數(shù)據(jù)庫(kù)中,但嵌套表和 VARRAY 可以被存儲(chǔ)在數(shù)據(jù)庫(kù)中。? VARRAY——和嵌套表類似,但是存儲(chǔ)元素的數(shù)量必須是指定的。? 嵌套表——可以存儲(chǔ)任意數(shù)量的元素,以連續(xù)的數(shù)字作為下標(biāo)索引。集合有以下三種類型:Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)? Index_by 表——也就是所謂的“聯(lián)合數(shù)組” ,你可以使用一個(gè)數(shù)字或字符串作為索引來(lái)直接查找表里的數(shù)據(jù)。…INSERT INTO EMP VALUES(Emp_Info)。比如下面的代碼就是錯(cuò)誤的:IF emp1emp1_too THEN此外,還要注意的是,雖然有的紀(jì)錄變量聲明為%ROWTYPE 類型,但是不能用在 INSERT 語(yǔ)句里面。上機(jī)練習(xí):使用 FETCH如果 SQL 語(yǔ)句返回多行數(shù)據(jù)或者希望使用帶參數(shù)的游標(biāo),那么就要使用游標(biāo),這種情況下使用 FETCH 語(yǔ)句代替 SELECT INTO 是一個(gè)更簡(jiǎn)單、更有效率的方法:上機(jī)練習(xí):Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ) 注意事項(xiàng)使用賦值語(yǔ)句將整個(gè)記錄復(fù)制給另一個(gè)記錄是一項(xiàng)非常有用的技術(shù),不過(guò)記錄必須精確地被聲明為相同的類型,不能是基于兩個(gè)不同的 TYPE 語(yǔ)句來(lái)獲得相同的結(jié)構(gòu)。Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ) 給記錄賦值給記錄或記錄中的域賦值的方法有幾種,可以使用 SELECT INTO 或FETCH 給整個(gè)記錄或單獨(dú)的域賦值, 可以將整個(gè)記錄的值賦給其他記錄,也可以通過(guò)給每個(gè)域賦值來(lái)得到記錄,以下我們通過(guò)實(shí)例講解每一種賦值方法。在前面的上機(jī)練習(xí)中,我們已經(jīng)接觸到了這種表示方式。在更低的層次,用戶可以處理記錄內(nèi)單獨(dú)的域,用戶可以給單獨(dú)的域賦值或者在單獨(dú)的域上運(yùn)行布爾表達(dá)式,也可以將一個(gè)或更多的域傳遞給另一個(gè)程序。記錄作為一種復(fù)合數(shù)據(jù)結(jié)構(gòu)意味作他有兩個(gè)層次可用。上述代碼中的 rec1 就是一個(gè)隱式聲明的紀(jì)錄類型,雖然在聲明段中沒(méi)有對(duì)它進(jìn)行聲明,但是在程序運(yùn)行中,仍然可以把它當(dāng)成一個(gè)變量來(lái)用。(觸發(fā)器在中心數(shù)據(jù)庫(kù)開(kāi)發(fā)規(guī)范中不允許使用,所以本文不作闡述)DELCARE CURSOR c1 IS SELECT DISTINCT tm202202212 dqh FROM TM202201。DECLARE accounter_info accounts%ROWTYPR。這是因?yàn)槲覀儾恍枰x記錄的結(jié)構(gòu),不需要使用 TYPE 語(yǔ)句,相反在聲明記錄變量時(shí)使用 %ROWTYPE 命令定義與數(shù)據(jù)庫(kù)表,視圖,游標(biāo)有相同結(jié)構(gòu)的記錄。在上面的例子記錄中的 symbol 域在編譯時(shí)將被定義為與表 stock 的 SYMBOL 列相同的數(shù)據(jù)類型和大小,當(dāng)代碼中要使用來(lái)自數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),在變量或域定義中最好使用%TYPE 來(lái)定義。 聲明一個(gè)叫 real_time_quote 的 stock_quote_rec 類型的變量上面代碼中的陰影部分就是這個(gè)紀(jì)錄類型的域列表。 )。下面我們看一個(gè)例子:DELCARE TYPE stock_quote_rec IS RECORD(symbol %TYPE ,bid NUMBER(10,4) ,ask NUMBER(10,4) ,volume NUMBER NOT NULL:=0 ,exchange VARCHAR2(6) DEFAULT 39。field_definition_list 是由逗號(hào)分隔的列表。使用 type 命令定義記錄,然后在創(chuàng)建該記錄的變量。隱式聲明是在基于表的結(jié)構(gòu)或查詢上使用%TYPE 屬性,隱式聲明是一個(gè)更強(qiáng)有力的工具,這是因?yàn)檫@種數(shù)據(jù)變量是動(dòng)態(tài)創(chuàng)建的。 創(chuàng)建記錄在 PL/SQL 中有兩種定義方式:顯式定義和隱式定義。域可以是標(biāo)量數(shù)據(jù)類型或其他記錄類型,它與 c 語(yǔ)言中的結(jié)構(gòu)相似,記錄也可以看成表中的數(shù)據(jù)行,域則相當(dāng)于表中的列,在表和虛擬表(視圖或查詢)中非常容易定義和使用,行或記錄中的每一列或域都可以被引用或單獨(dú)賦值,也可以通過(guò)一個(gè)單獨(dú)的語(yǔ)句引用記錄所有的域。在本文中我們將討論記錄和集合的類型、怎樣定義和使用記錄和集合。第 2 章 復(fù)合數(shù)據(jù)PL/SQL 有兩種復(fù)合數(shù)據(jù)結(jié)構(gòu):記錄和集合。 Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)注意:GOTO 語(yǔ)句不能用于將程序流程從執(zhí)行部分傳遞到異常部分或反之。如果從 FORMAT_XXX_STACK 輸出一個(gè)很大的值,那么使用DBMS_OUTPUT 或 UTL_FILE 顯示錯(cuò)誤或調(diào)用堆的異常部分自身也會(huì)拋出異常,這兩個(gè)堆常規(guī)下最多能返回 2022 字節(jié),但 被限制在 1000字節(jié)以內(nèi),而 限制在 512 字節(jié)內(nèi)。 reraise the exception END。 close error log (file_handle)。 write error stack(filehandle, )。W39。39。/ora01/app/oracle/admin/test/utlsir39。EXCEPTION WHEN order_too_old THEN DECLAREfile_handle 。DECLARE order_too_old EXCEPTION。處理異常將停止異常的傳播和解決。執(zhí)行部分拋出的異常將首先傳遞到同一塊的異常部分,如果在同一塊的異常部分沒(méi)有處理這個(gè)異常的處理器,那么異常將會(huì)傳播到上一層的異常部分中,一直到最外層。 結(jié)束內(nèi)部塊 控制不能到達(dá)這里,因?yàn)楫惓](méi)有解決; 異常部分 EXCEPTION WHEN OTHERS THEN 由于 bad_credit 沒(méi)有解決,控制將轉(zhuǎn)到這里 END。)。 發(fā)生異常,控制轉(zhuǎn)向; EXCEPTION WHEN ZERO_DIVIDE THEN 不能處理 bad_credite 異常 (39。BEGIN DECLARE 內(nèi)部塊開(kāi)始 bad_credit Exception。 bad_credit 異常處理后,控制轉(zhuǎn)到這里 EXCEPTION WHEN OTHERS THEN 控制不會(huì)從 bad_credit 異常轉(zhuǎn)到這里 因?yàn)?bad_credit 已被處理 END。)。 發(fā)生異常,控制轉(zhuǎn)向; EXCEPTION WHEN bad_credit THEN (39。BEGIN DECLARE bad_credit。 WHEN discontinued_item THEN code for discontinued_item processing WHEN zero_divide THEN code for zero_divide WHEN OTHERS THEN code for any other exception END。EXCEPTION WHEN inventory_too_low THEN :=39。如果沒(méi)有找到相應(yīng)的異常陷阱,那么將執(zhí)行 WHEN OTHERS。下面是異常部分的一般語(yǔ)法:EXCEPTION WHEN exception_name THEN Code for handing exception_name [WHEN another_exception THEN Code for handing another_exception] Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)[WHEN others THEN Code for handing any other exception.]用戶必須在獨(dú)立的 WHEN 子串中為每個(gè)異常設(shè)計(jì)異常處理代碼,WHEN OTHERS 子串必須放置在最后面作為缺省處理器處理沒(méi)有顯式處理的異常。backordered39。 END IF。DECLARE inventory_too_low EXCEPTION。當(dāng)發(fā)生相應(yīng)狀況時(shí),就會(huì)自動(dòng)進(jìn)入處理模塊(可以記錄日志等) 。例如,你希望用TIMEOUT_ON_RESOURCE 錯(cuò)誤檢測(cè)新的運(yùn)行時(shí)異常處理器,你只需簡(jiǎn)單的在程序中使用下面的語(yǔ)句:Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)RAISE TIMEOUT_ON_RESOUCE。格式如下:RAISE exception_name。 拋出異常由三種方式拋出異常:1. 通過(guò) PL/SQL 運(yùn)行時(shí)引擎 .;2. 使用 RAISE 語(yǔ)句.;3. 調(diào)用 RAISE_APPLICATION_ERROR 存儲(chǔ)過(guò)程;當(dāng)數(shù)據(jù)庫(kù)或 PL/SQL 在運(yùn)行時(shí)發(fā)生錯(cuò)誤時(shí),一個(gè)異常被 PL/SQL 運(yùn)行時(shí)引擎自動(dòng)拋出。這就要求代碼能夠非常干凈地把執(zhí)行語(yǔ)句和異常處理語(yǔ)句分割開(kāi)來(lái)。子塊中定義的變量不能被父塊引用。一個(gè)典型嵌套塊實(shí)例如下圖所示:這是一個(gè)三層的嵌套塊,用不同深淺的顏色標(biāo)記了出來(lái)。上機(jī)練習(xí)示范: PL/SQL 嵌套塊一般來(lái)說(shuō),我們只要在 PL/SQL 程序中看到“begin”關(guān)鍵字就可以認(rèn)為是一個(gè) PL/SQL 塊的開(kāi)始??梢杂脴?biāo)簽來(lái)標(biāo)記一個(gè)循環(huán),特別是在內(nèi)嵌多層循環(huán)的時(shí)候,可以用 EXIT加標(biāo)簽的形式使循環(huán)推出到想要的地方。Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ) Statements3。WHEN condition2 exit。 END LOOP。 標(biāo)記循環(huán) BEGIN outer_loop LOOPinner_loop LOOPStatements1。END insert_but_ignore_dups。 標(biāo)記程序塊insert_but_ignore_dups BEGIN INSERT INTO catalog VALUES (...)。Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)標(biāo)簽的形式是標(biāo)簽名。上機(jī)示范: 標(biāo)簽用戶可以使用標(biāo)簽使程序獲得更好的可讀性。y:=x。 FOR v_counter in 1..10 loop x:=x+10。如果使用了 REVERSE 關(guān)鍵字,那么范圍將是一個(gè)降序。LOOP 和 WHILE 循環(huán)的循環(huán)次數(shù)都是不確定的,F(xiàn)OR 循環(huán)的循環(huán)次數(shù)是固定的,counter 是一個(gè)隱式聲明的變量,它的初始值是 start_range,第二個(gè)值是 start_range+1,直到 end_range。上機(jī)示范:Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ) FOR...LOOP 循環(huán)語(yǔ)法:FOR counter IN [REVERSE] start_range....end_range LOOP statements。 END LOOP。X:=100。上機(jī)練習(xí)示范:如果不使用 IF…THEN 語(yǔ)句的話,也可以使用 EXIT WHEN condition 語(yǔ)句,同樣結(jié)束循環(huán),如果條件 condition 為 TRUE,則結(jié)束循環(huán)。 Y:=X。 IF X1000 THEN EXIT。 END LOOP;LOOP 和 END LOOP 之間的語(yǔ)句無(wú)限次的執(zhí)行顯然是不行的,那么在使用 LOOP 語(yǔ)句時(shí)必須使用 EXIT 語(yǔ)句,強(qiáng)制循環(huán)結(jié)束,例如:X:=100。Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ) LOOP 語(yǔ)句循環(huán)控制的基本形式是 LOOP 語(yǔ)句,LOOP 和 END LOOP 之間的語(yǔ)句將無(wú)限次的執(zhí)行。如果條件 condition1 為 TRUE 則執(zhí)行 statement1,然后執(zhí)行 statement5,否則判斷 condition2 是否為 TRUE,若為 TRUE 則執(zhí)行 statement2,然后執(zhí)行statement5,對(duì)于 condition3 也是相同的,如果condition1,condition2,condition3 都不成立,那么將執(zhí)行 statement4,然后執(zhí)行 statement5。END IF。ELSIF condition3 THENstatement3。 IF…ELSIF…ELSE…THEN 語(yǔ)句語(yǔ)法:IF condition1 THENstatement1。 END IF。ELSE g:=b。IF 可以嵌套,可以在 IF 或 IF ..ELSE 語(yǔ)句中使用 IF 或 IF..ELSE 語(yǔ)句。 .... END IF。 ....ELSE Statements 1。 IF..THEN...ELSE 語(yǔ)句語(yǔ)法:IF condition THEN Statements 1。 .... END IF。 算術(shù)操作符操作符 操作+ 加 減 Oracle PL/SQL 開(kāi)發(fā)基礎(chǔ)/ 除 * 乘 ** 乘方 關(guān)系操作符關(guān)系操作符主要用于條件判斷語(yǔ)句或用于 where 子句中,關(guān)系操作符檢查條件和結(jié)果是否為 true 或 false,下表是 PL/SQL 中的關(guān)系操作符操作符 操作 小于操作符= 小于或等于操作符 大于操作符= 大于或等于操作符= 等于操作符!= 不等于操作符 不等于操作符:
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1