Oracle存儲(chǔ)過(guò)程、包、方法使用總結(jié)(推薦)
Oracle存儲(chǔ)過(guò)程、包、方法使用總結(jié),具體代碼如示:
/** *@author:zhengwei *@date:2017-04-28 *@desc:存儲(chǔ)過(guò)程用法總結(jié) */ CREATE OR REPLACE PROCEDURE MYPROCEDURE(P_ID IN VARCHAR, P_STATUS OUT VARCHAR) --P_ID為輸入?yún)?shù) ,P_STATUS為輸出參數(shù) AS ---變量聲明 T_STATUS VARCHAR2(20); T_ID NUMBER; V_POSTYPE VARCHAR2(20); V_DESCRIPTION VARCHAR2(20); ---對(duì)象變量定義和聲明 TYPE XRECORD IS RECORD( FUND VARCHAR2(50), BATCH_NO VARCHAR2(50), TRAN_AMT NUMBER, END_BAL NUMBER, TRAN_DATE VARCHAR2(50), TRAN_TIME VARCHAR2(50), SUB_WATER NUMBER); XWATER XRECORD; ---游標(biāo)聲明,并填充數(shù)據(jù) CURSOR MY_CUR IS SELECT POS_TYPE, DESCRIPTION FROM VOTEMASTER; BEGIN ---變量賦值(注意:in類(lèi)型的參數(shù)不能直接賦值) T_STATUS := '1'; P_STATUS := T_STATUS; DBMS_OUTPUT.put_line('P_STATUS:' || P_STATUS); BEGIN ---循環(huán)游標(biāo),使用游標(biāo) FOR V_ROW IN MY_CUR LOOP BEGIN V_POSTYPE := V_ROW.POS_TYPE; V_DESCRIPTION := V_ROW.DESCRIPTION; DBMS_OUTPUT.put_line('POSTYPE:' || V_POSTYPE || ',description:' || V_DESCRIPTION); END; END LOOP; END; ---WHILE循環(huán)用法 BEGIN WHILE i < 10 LOOP BEGIN i := i + 1; END; END LOOP; END; --將select查詢(xún)的結(jié)果存入到變量中,可以同時(shí)將多個(gè)列存儲(chǔ)多個(gè)變量中,必須有一條記錄,否則拋出異常(如果沒(méi)有記錄拋出NO_DATA_FOUND) BEGIN SELECT col1, col2 INTO 變量1, 變量2 FROM typestruct WHERE xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ---IF判斷語(yǔ)句用法 BEGIN SELECT VOTETITLE, VATESUM INTO T_NAME, T_COUNT FROM VOTEMASTER WHERE ID = P_ID; IF T_COUNT <= 0 THEN P_STATUS := T_NAME || ':差'; ELSIF T_COUNT > 0 AND T_COUNT < 3 THEN P_STATUS := T_NAME || ':良好'; ELSE P_STATUS := T_NAME || ':優(yōu)秀'; END IF; END; ---對(duì)象變量賦值 BEGIN SELECT FUND, BATCH_NO, TRAN_AMT, END_BAL, TRAN_DATE, TRAN_TIME, SUB_WATER INTO XRECORD FROM ACCT_WATER WHERE FUND = P_ID; --對(duì)象變量的使用 DBMS_OUTPUT.put_line(XRECORD.BATCH_NO || XRECORD.FUND); END; ---索引表 ---我們?cè)谑褂么鎯?chǔ)過(guò)程的時(shí)候經(jīng)常需要處理記錄集,也就是多條數(shù)據(jù)記錄。分為單列多行和多列多行,這些類(lèi)型都可以稱(chēng)為集合類(lèi)型。索引表就是集合類(lèi)型中的一種。 ---索引表,也稱(chēng)為pl/sql表,不能存儲(chǔ)于數(shù)據(jù)庫(kù)中,元素的個(gè)數(shù)沒(méi)有限制,下標(biāo)可以為負(fù)值。 ---使用場(chǎng)景:如果僅僅是在存儲(chǔ)過(guò)程中當(dāng)作集合變量使用,索引表是最好的選擇。(也可以通過(guò)創(chuàng)建臨時(shí)表替代,但就不那么科學(xué)了,而且后期還得維護(hù)臨時(shí)表) ---索引表對(duì)象使用方案1: BEGIN ---索引表對(duì)象聲明、定義、使用 DECLARE TYPE acct_table_type IS TABLE OF ACCT%ROWTYPE INDEX BY BINARY_INTEGER; ---定義了一個(gè)索引表v_acct_table,其表中的每行記錄是ACCT表中的一行記錄 v_acct_table acct_table_type; BEGIN SELECT * BULK COLLECT ---BULK COLLECT INTO指是一個(gè)成批聚合類(lèi)型, 簡(jiǎn)單的來(lái)說(shuō) , 它可以存儲(chǔ)一個(gè)多行多列存儲(chǔ)類(lèi)型 INTO v_acct_table FROM ACCT WHERE acct_type = '570' AND ROWNUM < 5; FOR i IN 1 .. v_acct_table.COUNT LOOP DBMS_OUTPUT.put_line('ACCT:' || v_acct_table(i).fund || ',' || v_acct_table(i).bal || ',' || v_acct_table(i) .real_nmbr); END LOOP; END; END; ---索引表對(duì)象使用方案2: BEGIN --例子:利用記錄RECORD可用整體賦值的特性來(lái)填充PL/SQL表 DECLARE TYPE RECTYPE IS RECORD( FUND ACCT.FUND%TYPE,, ---表示定義的變量的類(lèi)型為表Acct的fund字段的同樣數(shù)據(jù)類(lèi)型 BAL ACCT.BAL%TYPE, OWNER ACCT.OWNER%TYPE, REAL_NMBR VARCHAR(30)); ---定義了一個(gè)索引表MYTAB,其表中的每行記錄是RECORD TYPE TABTYPE IS TABLE OF RECTYPE INDEX BY BINARY_INTEGER; MYTAB TABTYPE; VN NUMBER; BEGIN --填充 VN := 1; FOR VARR IN (SELECT FUND, BAL, OWNER, REAL_NMBR FROM ACCT WHERE ROWNUM <= 15 ORDER BY FUND ASC) LOOP MYTAB(VN) := VARR; --記錄整體賦值 VN := VN + 1; END LOOP; --訪(fǎng)問(wèn) VN := MYTAB.FIRST; FOR VARR IN VN .. MYTAB.COUNT LOOP DBMS_OUTPUT.PUT_LINE(VN || ' ' || MYTAB(VN).FUND || ' ' || MYTAB(VN).BAL || ' ' || MYTAB(VN).OWNER || ' ' || MYTAB(VN) .REAL_NMBR); VN := MYTAB.NEXT(VN); END LOOP; END; END;
以上所述是小編給大家介紹的Oracle存儲(chǔ)過(guò)程、包、方法使用總結(jié)(推薦),希望對(duì)大家有所幫助,如果大家有所疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
- oracle 存儲(chǔ)過(guò)程、函數(shù)和觸發(fā)器用法實(shí)例詳解
- windows中oracle存儲(chǔ)過(guò)程加密的實(shí)例代碼
- Oracle帶輸入輸出參數(shù)存儲(chǔ)過(guò)程(包括sql分頁(yè)功能)
- oracle中print_table存儲(chǔ)過(guò)程實(shí)例介紹
- Mybatis調(diào)用Oracle存儲(chǔ)過(guò)程的方法圖文詳解
- 詳解Oracle調(diào)試存儲(chǔ)過(guò)程
- Oracle存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)創(chuàng)建方法(詳解)
- Oracle存儲(chǔ)過(guò)程及調(diào)用
- Oracle生成單據(jù)編號(hào)存儲(chǔ)過(guò)程的實(shí)例代碼
- Oracle數(shù)據(jù)庫(kù)創(chuàng)建存儲(chǔ)過(guò)程的示例詳解
相關(guān)文章
Oracle中sys和system用戶(hù)、系統(tǒng)權(quán)限和角色的區(qū)別
本文從用戶(hù)、系統(tǒng)權(quán)限和角色三個(gè)維度分別介紹了Oracle中sys和system的區(qū)別,希望對(duì)大家有所幫助。2016-05-05ORACLE 回收站當(dāng)前狀態(tài)查詢(xún)整理
回收站(Recycle Bin)從原理上來(lái)說(shuō)就是一個(gè)數(shù)據(jù)字典表,放置用戶(hù)刪除(drop)掉的數(shù)據(jù)庫(kù)對(duì)象信息,接下來(lái)詳細(xì)介紹下ORACLE 回收站方方面面感興趣的你可以參考下哈2013-03-03Oracle數(shù)據(jù)庫(kù)新裝之后出現(xiàn)的監(jiān)聽(tīng)程序無(wú)法正常啟動(dòng)和運(yùn)行(Oracle-12514)問(wèn)題
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)新裝之后出現(xiàn)的監(jiān)聽(tīng)程序無(wú)法正常啟動(dòng)和運(yùn)行(Oracle-12514)問(wèn)題,需要的朋友可以參考下2018-11-11Oracle數(shù)據(jù)庫(kù)遷移所有文件到新掛載磁盤(pán)路徑
根據(jù)實(shí)際須要,有時(shí)安裝了oracle以后須要擴(kuò)展磁盤(pán)空間時(shí),每每是新增一個(gè)單獨(dú)的文件路徑并掛載存儲(chǔ),這時(shí)便須要總體遷移數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù),本文就來(lái)介紹一下Oracle數(shù)據(jù)庫(kù)遷移所有文件到新掛載磁盤(pán)路徑2024-01-01winserver 2012R2 安裝oracle及創(chuàng)建表流程(推薦)
這篇文章主要介紹了winserver 2012R2 安裝oracle及創(chuàng)建表流程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06