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

首頁 > 數據庫 > Oracle > 正文

ORACLE系統開發過程中的幾條實用技術

2024-08-29 13:38:51
字體:
來源:轉載
供稿:網友

  作者:哈爾濱工業大學法院街13號 1226信箱(150001) 徐淑鋒 左
  美云
  Oracle系統使用方便,功能強大,便于維護,安全性好。經過十多
  年的發展,已成為功能最齊全的、最受歡迎的關系數據庫治理系統。
  它不但成功地運行在大型機上,而且在小型機和微型機上也廣泛使用
  。筆者在開發過程中積累了一些實用技術,在這里挑選幾條與大家交
  流。
  
  一、Foxbase 與Oracle數據庫的雙向轉換技術
  DBaseⅢ、FoxBase曾是國內外應用廣泛的數據庫系統,很多企業
  單位都以此建立了自己的治理信息系統。隨著Oracle在國內的推廣,
  非凡是一些大型的企業需要開發新型的基于Oracle RDBMS的網絡治理
  系統,以適應治理發展與企業規模擴大的需要。在新舊系統轉換的過
  程中,我們希望能夠充分利用已有的數據庫資源,避免重復輸入。為此
  ,我們使用了PRO*C程序,在DOS環境下執行經過PRO*C預編譯、MSC編譯
  和聯接后形成的.EXE文件,直接將.DBF數據庫文件轉入相應的Oracle
  表中。
  通過對.DBF為文件結構的剖析,在Oracle數據庫中建立具有相應
  列(Column)的數據表。具體做法是:根據.DBF庫文件各字段的定義,生
  成一個字符串,用PRO*C的動態定義語句EXECUTE IMMEDIATE執行SQL語
  句"CREATE TABLE",在Oacle數據庫中建立一個數據表,然后通過循環
  語句把由.DBF文件讀出的記錄數據加入到Oracle數據表中。在循環體
  中,按數據文件的格式,每次讀取一條記錄,并轉換為合適的字符串,運
  用PRO*C的動態定義語句EXECUTE IMMEDIATE執行SQL語句"INSERT IN-
  TO",把讀出的數據插入數據表中。
  反過來,Oracle數據庫也可以轉換到FoxBase數據庫。思路是:先
  從Oracle的數據字典中取出表定義、字段定義;再按照.DBF庫文件的
  存儲結構,直接生成.DBF庫文件的標識部、字段描述部,用Oracle表字
  段的相應數據填寫;最后將Oracle表中的記錄寫到生成的FoxBase數據
  記錄體域,從而實現了Oracle數據庫與FoxBase數據庫的雙向轉換。
  
  二、巧用文本編輯軟件提高Oracle開發效率
  Oracle系統的文本編輯功能及全屏幕編輯功能并不太盡人意,在
  系統開發過程中,我們如能結合使用國內流行的文本編輯軟件(如CCED
  、wps等),會收到更好的效果。
  1、建立基表
  SQL*PLUS是一種非過程化的交互式命令語言,在該環境下,鍵入的
  SQL命令被保存在SQL緩沖區中,新鍵入的語句將沖掉上一次鍵入的語
  句,而且,在SQL*PLUS下,只能用命令I、C、D、A進行行編輯,不能進行
  全屏幕編輯,而建立一個基表要定義許多字段,命令輸入中難免發生錯
  誤,這給開發者增加了難度。
  解決的方法是:用文本編輯軟件建立一個擴展名.SQL的命令文件,
  文件中應包含建表命令"CREATE TABLE";然后,在SQL*PLUS下用START
  命令運行該文件,如有錯誤可再回到文本編輯狀態下修改。
  這種方法很適合開發初期建立大量的基表、視圖。通過充分利用
  文本編輯軟件中的塊復制、行復制等功能,可大大減少輸入工作量。
  2、更新FORM
  建立FORM時通過人機對話的方式,產生兩類文件:一類是INP文本
  文件,記錄了人機對話的內容及FORM的格式;另一類是FRM可執行文件,
  此文件是用IAG對INP文件編譯后生成的。
  在生成FORM的過程中,假如人機對話有誤或屏幕格式需調整,只需
  用文字編輯軟件對INP文件進行修改,修改后用IAG命令進行編譯即可,
  不必重新進行整個FORM的設計。假如在已做好的FORM中有些塊定義和
  需要做的FORM中塊定義完全相同,就可以把已有的INP文件拷貝過來直
  接使用,此方法為FORM的建立提供了一種快速有效的途徑。
  所以,文本編輯軟件的有效使用,增加了Oracle系統應用開發的靈
  活性。
  
  三、PRO*C程序調試過程中的出錯檢驗技巧
  在PRO*C程序中,使用SQL語句對數據庫數據進行操作時,并不能保
  證每個SQL語句一定能執行成功,而這種導致SQL操作不成功的錯誤在
  預編譯、編譯和連接過程中卻又經常發現不出來。為了解決SQL語句
  的出錯檢驗問題,我們在程序中利用通訊區SQLCA返回的信息來檢測SQ
  L語句的執行情況。

  在PRO*C程序開頭使用了"EXEC SQL INCLUDE SQL-CA"語句,它包
  含名為SQLCA的文件,在SQLCA文件中定義了sqlca的結構:
  strUCt sqlca{
  char sqlcaid[8];
  long sqlcabc;
  long sqlcode;
  struct{
  unsigned short sqlerrml;
  char sqlerrmc[70];
  } sqlerrm;
  char sqlerrp[8];
  long sqlerrd[6];
  char sqlwarn[8];
  char sqlext[8];
  };
  struct sqlca sqlca;
  sqlca是個結構變量,系統將SQL語句執行情況的信息存入到相應
  的結構成員中。其中,sqlca.sqlcode中存放的是出錯代碼,規定:
  =0 表示執行成功,
  sqlca.sqlcode +1043表示"No row found"或返回的是基表中
  最后一行,
  <0 表示SQL執行不成功,程序有錯或系統故障。
  在子結構sqlca.sqlerrm中存放出錯的正文信息,其中:
  sqlca.sqlerrm.sqlerrmc:存放對應 sqlca.sqlcode中出錯代碼
  的正文信息;
  sqlca.sqlerrm.sqlerrml:存放正文信息的長度。
  所以,程序調試過程中,我們只要在需要高度的SQL語句后面加上
  如下的一段程序:
  printf("sqlcode is :%d/n",sqlca,sqlcode);
  if sqlca.sqlcode<0 {
  printf("sqlca.sqlerrm is:%s/n",sqlca.sqlerrm.sqler-rmc
  );
  exit(0);
  }
  我們根據sqlca.sqlcode的值判定SQL是成功。根據sqlca.sqlerr
  m的內容判定錯誤的原因,對程序進行重新的修改,從而提高了程序檢
  測的效率。
  
  四、運用動態語句實現程序通用設計
  Oracle數據庫治理系統提供了四種類型的動態語句:
  A:非查詢的無參數動態語句
  B:非查詢的帶參數動態語句
  C:查詢動態語句
  D:使用描述符的動態語句
  在程序中,將一個SQL語句放到一個字符串變量之中,利用動態語
  句即可將該SQL語句執行。因此,在應用系統設計過程中,只要變換作
  為SQL語句的字符串內容便可執行不同的SQL語句。假如SQL語句字符
  串從磁盤文件中讀來,那么,只要改變該磁盤文件的內容,就能動態地
  控制SQL語句的執行內容,而不需對應用程序作任何改變,正是由于這
  個特點,使得程序通用設計成為一種可能。
  用動態語句,我們就可以通過鍵盤方式或其它方式改變SQL語句,
  運用一個程序完成對不同基表的數據插入、刪除、修改和查詢,非凡
  是通用報表打印的設計中,更體現了動態語句的特點。在設計過程中,
  我們不把表頭、表尾及表的格式這些難以調整和維護的內容限定在程
  序語句中,而是把它加入到動態查詢程序中。在維護報表系統時,我們
  同樣不用修改報表程序。同時,在程序加入"用戶出口"調用別的可執
  行程序或DOS操作系統命令,用以完成一些通用程序本身所完成不了的
  功能,從而提高了通用程序的實用價值。
  除上述四條經驗之外,對于如何解決一屏多記錄分塊設置,零頁的
  使用及快速查找當前記錄,合理解決分區空間不足等問題,由于篇幅所
  限,就不一一詳述了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺市| 陇西县| 密山市| 莆田市| 竹北市| 图片| 亚东县| 黄冈市| 恭城| 吉木乃县| 临颍县| 大英县| 南溪县| 宁波市| 通山县| 凤台县| 新兴县| 宁明县| 慈利县| 桂阳县| 环江| 中江县| 大方县| 梅州市| 冷水江市| 林芝县| 尼木县| 韩城市| 会理县| 巴中市| 合水县| 新巴尔虎左旗| 昆明市| 清水县| 凤山县| 邹城市| 海南省| 闽清县| 图木舒克市| 台中县| 舞阳县|