oracle儲存過程!解決網友問題
有表T_1(index_1, crop_id, corp_name, start_time, end_time),
需要生成T_2(index_2, corp_id, corp_name, year_time, month_time).
其中index_1和index2由SEQUENCE產生
資料如下:
T_1
index_1, corp_id, corp_name, start_time, end_time
101 1 microsoft 2007-5 2007-7
102 2 ibm 2008-1 2008-2
T_2
index_2, corp_id corp_name year_time month_time
8 1 microsoft 2007 5
9 1 microsoft 2007 6
10 1 microsoft 2007 7
11 2 ibm 2008 1
12 2 ibm 2008 2
解答:
用儲存過程寫一個,沒有考慮單個corp_name跨年的情況!
- SQL code
- --建立T_1 create table T_1 ( corp_id int ,corp_name varchar(10) ,start_time date ,end_time date ) --建立T_2 create table T_2 ( corp_id int ,corp_name varchar(10) ,year_time DATE ,month_time date ) --插入資料 insert into T_1 values('1','microsoft',to_date('2007-05','yyyy-mm'),to_date('2007-07','yyyy-mm')) insert into T_1 values('2','ibm',to_date('2008-01','yyyy-mm'),to_date('2008-02','yyyy-mm')) --建立儲存過程 create or replace procedure pro_test_A is i INT; j INT; A01 INT; A02 varchar2(10); A03 Date; A04 Date; A05 INT; A06 INT; tmpA INT; tmpB INT; CURSOR cur_q IS SELECT * FROM t_1; BEGIN OPEN cur_q; LOOP FETCH cur_q INTO A01,A02,A03,A04; EXIT WHEN cur_q%NOTFOUND; tmpA :=MONTH(A03); tmpB :=MONTH(A04); A06 :=YEAR(A03); A05 := tmpB-tmpA; j :=tmpA-1; FOR i in 0..A05 Loop j :=j+1; INSERT INTO T_2 values(A01,A02,A06,j); COMMIT; END Loop; END LOOP; CLOSE Cur_q; END; ______________________ SQL: exec pro_test_a ______________________ RESULT: 1 2 ibm 2008 1 2 2 ibm 2008 2 3 1 microsoft 2007 5 4 1 microsoft 2007 6 5 1 microsoft 2007 7
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/101162/viewspace-1007579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- Oracle儲存過程Oracle儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- 達夢儲存過程效能問題定位儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- MySQL儲存過程的許可權問題MySql儲存過程
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- 通過IPFS技術解決NFT的永久儲存問題
- mongo 儲存過程詳解Go儲存過程
- 儲存過程效能低的解決方法之一儲存過程
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- 儲存過程訪問其他使用者的表的問題儲存過程
- MySQL 高階 | 用儲存過程、定時器、觸發器來解決資料分析問題MySql儲存過程定時器觸發器
- 應用儲存過程執行報錯解決方案儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 華為雲物件儲存OBS,助力企業高效解決儲存問題物件
- munium學習過程中問題解決
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- oracle儲存過程許可權繼承小結Oracle儲存過程繼承
- oracle 11.2.0.4 DataGuard Broker配置過程中可能遇到的問題及解決方法Oracle
- 解決MongoDB儲存時間時差的問題MongoDB