亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3947 | 回復(fù): 0
打印 上一主題 下一主題

批量更新表字段日期值的存儲過程 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-02-09 17:04 |只看該作者 |倒序瀏覽
今天由于測試一個報表,必須要當(dāng)天的數(shù)據(jù),可我昨天剛測過,數(shù)據(jù)還在庫里,于是想偷個懶,手工修改時間字段為今天的日期,改了不到1分鐘,發(fā)現(xiàn)表太多了,而且記錄時間的字段每個表還不止一個,不如用程序來做。于是寫了下面的這個存儲過程,哈哈,好用
  1. /*
  2. *搜索數(shù)據(jù)庫當(dāng)前用戶的所有表,查出所有含date和time名稱,
  3. *并且是number(14)類型的字段的日期部分改為當(dāng)前日期
  4. */
  5. declare
  6.   type tcur is ref cursor; --定義游標類型
  7.   columnsCur   tcur;       --定義表的字段游標
  8.   sTName       varchar(30);--存儲表名
  9.   sCName       varchar(30);--存儲字段名
  10.   nCurrentTime number(14); --存儲當(dāng)前日期
  11.   updstr       varchar(900);
  12. begin
  13.   --獲取當(dāng)前日期YYYYMMDD
  14.   select to_number(to_char(sysdate, 'YYYYMMDD') || '000000')
  15.     into nCurrentTime
  16.     from dual;

  17.   --從oracle系統(tǒng)表獲取包含數(shù)字日期形式的字段名和對應(yīng)的表名
  18.   OPEN columnsCur for
  19.     select p.TABLE_NAME, p.COLUMN_NAME
  20.       from user_tab_columns p
  21.      where p.TABLE_NAME IN ('OPENORDER',
  22.                             'ORDERINSTRUCTION',
  23.                             'INSTRUCTIONDETAIL',
  24.                             'INTELLIGENTORDER',
  25.                             'TRADINGRESULT')
  26.        and p.DATA_TYPE = 'NUMBER' and p.DATA_PRECISION=14
  27.        and (p.COLUMN_NAME like '%DATE%' or p.COLUMN_NAME like '%TIME%');

  28.   --根據(jù)獲得的表名和字段名把目前的時間更新為當(dāng)前日期,時間保持不變
  29.   loop
  30.     fetch columnsCur
  31.       into sTName, sCName;
  32.     exit when columnsCur%notfound;
  33.     begin
  34.       --執(zhí)行更新
  35.       updstr := 'UPDATE ' || sTName || ' SET ' || sCName || '=' ||
  36.                 nCurrentTime || '+ to_number(nvl(substr(' || sCName ||
  37.                 ', 9), 0)) where ' || sCName || ' IS NOT NULL AND ' || sCName || '>0';
  38.       --debug
  39.       --dbms_output.put_line(updstr);
  40.       execute immediate updstr;
  41.     exception
  42.       --如果發(fā)生錯誤,打印出執(zhí)行的sql
  43.       when others then
  44.         dbms_output.put_line('Error:' || updstr);
  45.     end;
  46.     end loop;
  47.   commit;
  48. end;
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP