国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle DP2000 應(yīng)用技巧

2024-08-29 13:39:41
字體:
供稿:網(wǎng)友

  Oracle 公 司 作 為 全 球 最 大 的 數(shù) 據(jù) 庫 廠 商 之 一, 其 數(shù) 據(jù) 庫 系 統(tǒng) 是 優(yōu) 秀 的 數(shù) 據(jù) 庫 管 理 系 統(tǒng), 在 大 型 系 統(tǒng) 象 保 險(xiǎn)、 金 融 等 部 門 的 廣 泛 應(yīng) 用 是 眾 所 周 知 的, 但 其 數(shù) 據(jù) 庫 前 端 開 發(fā) 工 具DEVEPER/2000 在 業(yè) 界 中 介 紹 的 卻 相 對(duì) 較 少。 其 實(shí) 其 開 發(fā) 工 具Developer/2000 也 是 一 功 能 強(qiáng) 大 的、 方 便 靈 活 的 開 發(fā) 工 具。Developer/2000 在 構(gòu) 建 企 業(yè) 管 理 信 息 系 統(tǒng) 上, 其 編 程 簡 便、 開 發(fā) 周 期 短、 維 護(hù) 方 便 等 優(yōu) 勢(shì) 更 是 軟 件 開 發(fā) 商 所 中 意 之 處, 筆 者 所 在 公 司 在 開 發(fā) 社 保 系 統(tǒng) 中 就 采 用Developer/2000, 在 遼 寧 省 的 應(yīng) 用 中 取 得 良 好 效 果。 下 面 就 本 人 在Developer/2000 開 發(fā) 社 保 系 統(tǒng) 中 所 遇 問 題 與 各 位 進(jìn) 行 交 流。
  ---- 1. Developer/2000 FROMS 4.5 中 的" 宏" 代 換
  
  ---- 在 早 期FOXPRO 數(shù) 據(jù) 庫 編 程 中, 經(jīng) 常 用 到 宏 代 換 功 能, 但 在FORMS 中 卻 沒 有 此 功 能, 象"&","*" 等 在 編 程 中 經(jīng) 常 用 到 的, 在FORMS 中 只 得 一 行 一 行 代 碼 的 寫, 但 后 來 發(fā) 現(xiàn)FORMS 中 也 有 類 似 功 能, 用NAME_IN()、COPY() 可 以 實(shí) 現(xiàn) 類 似 的 功 能。Name_in() 用 于 取 出 參 數(shù) 名 代 表 的 對(duì) 象 了 數(shù) 值, 而COPY() 把 一 個(gè) 參 數(shù) 值 傳 遞 給 另 一 參 數(shù) 值 表 示 的 對(duì) 象。 的 如 下 例:
  
  FORM 結(jié) 構(gòu):
  塊B
  項(xiàng) L1,L2,L3,L4,L5,L6
  在 作 錄 入 程 序 時(shí) 要 對(duì)L1。。。L6 項(xiàng) 清 零
  DELCATE
  strItemName varchar2(20);
  BEGIN
  for I in 1 …6 loop
  strItemName:=':b.l"to_char(i);
  copy(null,strItemNmae);
  end loop;
  END;
  ---- 對(duì) 于NAME_IN 的 應(yīng) 用 可 能 更 多 一 些, 筆 者 在 做 社 保 軟 件 時(shí), 作 保 險(xiǎn) 繳 費(fèi) 錄 入 時(shí) 曾 用 它 少 寫 了 許 多 代 碼。 當(dāng) 然 代 碼 的 減 少 就 義 意 味 維 護(hù) 工 作 量 的 減 少
  
  ----
  
  FORM結(jié)構(gòu):
  養(yǎng)老:
  塊:YLYJ(養(yǎng)老應(yīng)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  塊:YLSJ (養(yǎng)老實(shí)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  工傷:
  塊:GSYJ(工傷應(yīng)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  塊:GSSJ (工傷實(shí)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  醫(yī)療:
  塊:YILYJ(醫(yī)療應(yīng)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  塊:YILSJ (醫(yī)療實(shí)繳)
  項(xiàng):DWJTC(單位繳統(tǒng)籌),DWJZH(單位繳帳戶),GRJF(個(gè)人繳費(fèi))
  ---- 三 個(gè) 塊 的 結(jié) 構(gòu) 相 同, 只 是 塊 名 稱 不 同, 繳 費(fèi) 時(shí) 時(shí) 行 的 操 作 也 一 樣, 實(shí) 繳 名 項(xiàng) 不 能 大 于 應(yīng) 繳, 不 用NAME_IN 時(shí), 只 能 寫 三 段 程 序, 但 用 了NAME_IN 后 只 用 一 段 寫 一 個(gè) 函 數(shù) 就 能 達(dá) 到 目 的。 如 下:
  
  FUNCTION FUN_JF (PRE_BLOCK_NAME
  IN VARCHAR) RETURN BOOLEAN IS
  BEGIN
  if name_in(pre_block_name'sj.dwjtc')
  >name_in(pre_block_name'yj.dwjtc') or
  name_in(pre_block_name'sj.dwjzh')
  >name_in(pre_block_name'yj.dwjzh') or
  name_in(pre_block_name'sj.grjf')
  >name_in(pre_block_name'yj.grjf') then
  message(' 實(shí) 繳 大 于 應(yīng) 繳');
  return false;
  end if;
  return true;
  END;
  ---- 從 上 面 的 兩 個(gè) 例 子 來 看NAME_IN 和COPY 的 應(yīng) 用 能 起 到 其 它 編 程 語 言 的" 宏" 代 換 功 能, 代 碼 的 優(yōu) 化 方 面 確 實(shí) 能 起 不 少 的 作 用, 減 少 了 程 序 源 代 碼 的 維 護(hù) 工 作。
  
  2. 用FORMS 實(shí) 現(xiàn)ORACLE 數(shù) 據(jù) 庫 與 其 它 數(shù) 據(jù) 源 數(shù) 據(jù) 的 交 換
  
  ---- Developer/2000 不 能 實(shí) 現(xiàn) 同 時(shí) 多 數(shù) 據(jù) 源 的 同 時(shí) 連 接, 在 多 系 統(tǒng) 和 異 種 數(shù) 據(jù) 源 的 操 作 中 功 能 確 實(shí) 大 打 折 扣, 雖 然 可 以 用3GL 加ODBC 作 一DLL 應(yīng) 用 能 實(shí) 現(xiàn), 但 一 般 的 應(yīng) 用 中 又 有 點(diǎn) 沒 用 必 要 作 的 那 么 復(fù) 雜。
實(shí) 際 上Developer/2000 內(nèi) 嵌 包TEXT_IO 為 我 們 提 供 了 一 個(gè) 更 簡 單 的 方 法。 幾 乎 所 有 的 數(shù) 據(jù) 庫 或 數(shù) 據(jù) 庫 前 端 開 發(fā) 工 具 都 提 供 文 本 文 件 的 操 作, 這 樣 我 們 完 全 可 以 用 文 本 文 件 作 為 數(shù) 據(jù) 交 換 的 通 用 格 式。 下 例 是 在 保 險(xiǎn) 業(yè) 中 的 一 應(yīng) 用:( 要 用 到d2kwfile.dll 應(yīng) 用)
  
  DECLARE
  filename varchar2(128):=null;
  filenum text_io.file_type;
  linebuf varchar2(100);
  r_temp temp%rowtype;
  BEGIN
  filename:=d2k_file_dialog.show
  ('請(qǐng)選擇繳費(fèi)工資臺(tái)帳原文件','c:/','源文件(*.txt)*.txt');
  if filename is null then
  raise form_trigger_failure; end if;
  filenum:=text_io.fopen(filename,'r');
  loop
  BEGIN
  text_io.get_line(filenum,linebuf);
  TEXT_IO.PUT(linebuf);TEXT_IO.NEW_LINE;
  exception when no_data_found then
  exit;
  END;
  BEGIN
  v_temp.l1=substr(linebuf,1,9);
  v_temp.l2:= to_number(substr(linebuf,10,5));
  insert into temp(l1,l2) values (v_temp.l1,v_temp.l2);
  exception when others then
  END;
  < < end_loop > >
  null;
  end loop;
  END;
  ---- 3. FORMS 4.5 實(shí) 現(xiàn) 的 列 表 查 詢、 多 行 錄 入 中 的 實(shí) 現(xiàn) 行 累 計(jì)
  
  ---- 在PB 和VB 中 都 用 類 似 的 求 和 或 者 說 累 計(jì) 列, 但 在 早 期 的FORMS4。5 中 沒 有 此 功 能, 對(duì) 于 多 條 記 錄 的 錄 入 中 需 要 進(jìn) 行 求 和 時(shí) 很 不 方 便, 其 實(shí) 利 用FORM 的 觸 發(fā) 子 很 容 易 實(shí) 現(xiàn)。 如 下 例:
  
  塊:b1 項(xiàng):l1,l2.l3,l4
  塊:b2 項(xiàng):l1,l2,l3,l4
  塊b2是B1的求和塊
  在塊B1中的PRE_TEXT_ITEM中代碼:
  IF SUBSTR(:SYSTEM.CURRENT_ITEM,1,1) IN ('L') THEN
  :GLOBAL.ITEM_PREVALUES:=NAME_IN
  ('B1.':SYSTEM.CURRENT_ITEM);
  END IF;
  在塊 B2中的POST_TEXT_ITEM中代碼:
  DECLARE
  num_cz number; --數(shù)據(jù)項(xiàng)在錄入或修改前后的差值
  num_hz number; --數(shù)據(jù)項(xiàng)在修改后的求合
  BEGIN
  if substr(:system.current_item,1,1) in ('l') then
  :global.item_nextvalues:=name_in
  ('b1.':system.current_item);
  num_cz:=nvl(to_number(:global.item_nextvalues),0)-
  nvl(to_number(:global.item_prevalues),0);
  --新的和值
  num_hz:=nvl(to_number(name_in('b_sum.'
  :system.current_item)),0)+num_cz;
  copy(to_char(num_hz),'b2.':system.current_item);
  end if;
  END;
  ---- 通 過 前 后 兩 值 的 比 較 很 容 易 的 實(shí) 現(xiàn) 一 個(gè) 較 通 用 的 求 和 算 法, 另 外 又 一 次 用 到NAME_IN 和 COPY , 減 少 了 代 碼 量。 在 塊 上 實(shí) 現(xiàn) 觸 發(fā) 子 也 減 少 了 代 碼 維 護(hù) 工 作 量。
  
  ---- 4. REPORT 2.5 中 實(shí) 現(xiàn) 的 動(dòng) 態(tài) 報(bào) 表( 一 張 表 利 用 多 個(gè)QUERY 語 句, 生 成 一 樣 格 式 的 多 張 報(bào) 表
  
  ---- 在 做 報(bào) 表 時(shí) 經(jīng) 常 要 遇 到 類 似 的 報(bào) 表 有 多 張 的 情 況, 雖 然 通 過 簡 單 的 拷 貝 可 以 減 少 編 程 的 工 作 量, 但 在 后 期 的 維 護(hù) 中 卻 增 加 了 難 度, 一 張 表 改 完 后 又 改 另 一 張 表, 進(jìn) 行 大 量 的 重 復(fù) 勞 動(dòng) 不 是 每 個(gè) 程 序 員 想 做 的 工 作。 其 實(shí) 在REPORT 2。5 中 有 一 很 好 的 功 能 可 能 完 成 這 樣 的 工 作。 就 是REPORT 的" 宏" 代 換。 如 下 例:
  
  兩個(gè)表:tab_temp1 (a number,b number,c number)
  tab_temp2 (d number,e number,f number)
  ---- 作 兩 張 報(bào) 表, 表 頭 一 樣, 但 查 詢 不 一 樣, 分 別 取 自 兩 個(gè) 表
  
  建 一 用 戶 參 數(shù)(user parameters) p_1 類 型 CHAR 長 度 200, 缺 省 值 是 SELECT A,B,C FROM TAB_TEMP
  
  建 一 查 詢(QUERIES), 在 查 詢 語 句 中 輸 入:&P_1
  
  生 成 布 局, 可 按 要 求 畫 出 報(bào) 表。
  ---- 因 在 查 定 義 中 用 的 是&p_1 定 義, 所 以 可 以 在 運(yùn) 行 時(shí) 動(dòng) 態(tài) 的 給P_1 傳 遞 能 數(shù) 只 要 能 滿 足 其 列 名 定 義 即 可, 例 可 用 如 下 語 句 代 入P_1
  
  SELECT D A,E B,F C FROM TAB_TEMP2
  ---- 這 樣 就 生 成 了 一 個(gè) 多 功 能 報(bào) 表, 把 編 寫REPROT 工 作 從 簡 單 的 布 局 編 輯 中 解 脫 出 來, 而 投 入 到 實(shí) 質(zhì) 性 的 工 作SQL 語 句 的 生 成 上 去。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 根河市| 深泽县| 宜城市| 平顶山市| 黄平县| 全州县| 吴桥县| 白朗县| 莲花县| 佛山市| 大连市| 大新县| 铜川市| 白水县| 文昌市| 海门市| 英德市| 华容县| 年辖:市辖区| 兴宁市| 阿巴嘎旗| 东乡县| 朝阳县| 兴城市| 昌邑市| 化隆| 和平区| 禄劝| 双桥区| 华池县| 新余市| 寻乌县| 洞口县| 博爱县| 开平市| 偏关县| 永兴县| 阿拉尔市| 安岳县| 调兵山市| 涟水县|