隨筆 - 9  文章 - 5  trackbacks - 0
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          在ORACLE存儲(chǔ)過(guò)程中創(chuàng)建臨時(shí)表

          存儲(chǔ)過(guò)程里不能直接使用DDL語(yǔ)句,所以只能使用動(dòng)態(tài)SQL語(yǔ)句來(lái)執(zhí)行

          --ON COMMIT DELETE ROWS 說(shuō)明臨時(shí)表是事務(wù)指定,每次提交后ORACLE將截?cái)啾恚▌h除全部行)
          --ON COMMIT PRESERVE ROWS 說(shuō)明臨時(shí)表是會(huì)話指定,當(dāng)中斷會(huì)話時(shí)ORACLE將截?cái)啾怼?/p>


          CREATE OR REPLACE PROCEDURE temptest
          (p_searchDate IN DATE)
          IS
          v_count INT;
          str varchar2(300);
          BEGIN
          v_count := 0;
          str:='drop table SETT_DAILYTEST';
          execute immediate str;
          str:='CREATE GLOBAL TEMPORARY TABLE SETT_DAILYTEST (
          NACCOUNTID NUMBER not null,
          NSUBACCOUNTID NUMBER not null)
          ON COMMIT PRESERVE ROWS';
          execute immediate str; ----使用動(dòng)態(tài)SQL語(yǔ)句來(lái)執(zhí)行
          str:='insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance)';
          execute immediate str;
          END temptest;

          上面建立一個(gè)臨時(shí)表的存儲(chǔ)過(guò)程

          下面是執(zhí)行一些操作,向臨時(shí)表寫數(shù)據(jù)。

          CREATE OR REPLACE PROCEDURE PR_DAILYCHECK
          (
          p_Date IN DATE,
          p_Office IN INTEGER,
          p_Currency IN INTEGER,
          P_Check IN INTEGER,
          p_countNum OUT INTEGER)
          IS
          v_count INT;
          BEGIN
          v_count := 0;
          IF p_Date IS NULL THEN
          dbms_output.put_line('日期不能為空');
          ELSE
          IF P_Check = 1 THEN
          insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
          where dtdate = p_Date);

          select
          count(sd.naccountid) into v_count
          from sett_subaccount ss,sett_account sa,sett_dailytest sd
          where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
          AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
          and rownum < 2;
          COMMIT;
          p_countNum := v_count;
          dbms_output.put_line(p_countNum);
          END IF;
          IF P_Check = 2 THEN
          insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
          where dtdate = p_Date);

          select
          count(sd.naccountid) into v_count
          from sett_cfsubaccount ss,sett_account sa,sett_dailytest sd
          where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
          AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
          and rownum < 2;
          COMMIT;
          p_countNum := v_count;
          dbms_output.put_line(p_countNum);
          END IF;
          END IF;
          END PR_DAILYCHECK;

          posted on 2009-01-13 21:23 依然Fantasy 閱讀(17363) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 巫溪县| 云龙县| 南宁市| 旅游| 吴堡县| 唐海县| 莒南县| 大关县| 新邵县| 新丰县| 昌黎县| 太保市| 大洼县| 平度市| 郯城县| 临泉县| 瓦房店市| 樟树市| 文登市| 临江市| 大同县| 华蓥市| 临朐县| 基隆市| 吉隆县| 常熟市| 盐山县| 平远县| 根河市| 湖南省| 唐海县| 监利县| 拉孜县| 克什克腾旗| 丰台区| 铜鼓县| 聊城市| 南华县| 陕西省| 汉中市| 香河县|