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

首頁 > 開發 > 綜合 > 正文

OO40編程教程

2024-07-21 02:35:59
字體:
來源:轉載
供稿:網友

  OO4O應用
  Oracle Object for OLE(OO4O)是一個進程內OLE自動化服務器,它實現了一組用于連接ORACLE數據服務器和執行查詢及處理結果的對象和接口。OO4O是非凡為與ORACLE數據庫協同工作而開發并發展起來的,并且其實現并不依靠于使用ODBC API。 這種非依靠性使得OO4O能提供訪問ORACLE獨有特性的優化的API。當然,假如你想使用OO4O,必須在你的機器里裝上ORACLE的net8。
  1.應用初步
  先來看一下下面的小程序(VB)
  Dim OracleDBsession As Object
  Dim SecDB As Object
  Dim Sec As Object
  Dim SecRecord As Object
  Set OracleDBSession = CreateObject("OracleInPRocServer.XOraSession")
  Set SecDB = OracleDBSession.opendatabase("net8_name", "user_name/passWord", &H0&)
  Set Sec = SecDB.createdynaset("select * from user_tables", &H0&)
  Set SecRecord = Sec.fields
  Do While Not Sec.EOF
   Debug.Print SecRecord(0)
   Sec.movenext
  Loop
  要訪問自動化服務器所提供的接口,就需要首先創建一個服務器的實例,在VB中,這是通過調用CreateOjbect函數來完成的。這個函數的參數是組件的ID。CreateObject返回一個接口,從此接口可以獲得組件的其他接口。OraSession是調用CreateObject時由OO4O返回的接口。
  在前面的例子,是通過下面的語句來實現這一點的:
  Set OracleDBSession = CreateObject("OracleInProcServer.XOraSession")
  OracleInProcServer.XoraSession是用于OO4O的版本獨立的程序ID,它由ORACLE客戶安裝程序在Windows Registry中注冊,它是Class ID(CLSID)的符號名,CLSID是標識OO4O組件的全局唯一標識符。OracleDBSession是保存OraSession接口的實例的變量。OraSession主要用來作為創建OraDatabases的工廠對象。
  OraSession接口的OpenDatabase方法被用于記錄到ORACLE數據庫的連接。這個方法還返回到OraDatabase接口的引用。OraDatabase提供了用于執行SQL語句和PL/SQL塊的方法。下面一句處理的是連接:
  Set SecDB = OracleDBSession.opendatabase("net8_name", "user_name/password", &H0&)
  其中net_name,user_name,password等幾項替換成實際的名字。
  2.執行SQL和PL/SQL程序塊
  Dynaset創建方法(CreateDynaset,CreatePlsqlset,CreateCustomDynaset和CreateCustomPlsqlset)與ExecuteSQL和CreateSQL一同組成了OraDatabase接口所提供的執行SQL語句和PL/SQL代碼的所有方法。
  OraDynaset接口代表著SQL SELECT查詢或存儲過程返回的游標變量的結果集。它本質上是一個可滾動的(向前或向后)客戶端游標,用來瀏覽執行查詢所獲得的記錄行。
  CreateDynaset方法執行SQL SELECT,而CreatePlsqlDynaset執行PL/SQL存儲過程。
  ExecuteSQL和CreateSQL方法執行SQL語句和PL/SQL塊。它們都能執行所給的更新語句,不同的是CreateSQL除執行語句外還返回一個指向OraSqlStmt接口的引用。通過Refresh方法可以在以后用該接口執行同一個查詢。由于該查詢已經被服務器解析,所以對同一查詢的執行會更快一些,非凡是在使用綁定參數時就更加如此。
  
  3.使用參數
  Set OracleDBSession = CreateObject("OracleInProcServer.XOraSession")
  Set SecDB = OracleDBSession.opendatabase(txtNet8, txtUser & "/" & txtPassword, &H0&)
  SecDB.Parameters.Add "P1", "A1", 2
  SecDB.Parameters.Add "P2", "A1", 2
  SecDB.Parameters.Add "P3", 0, 1
  SecDB.Parameters.Add "P4", 0, 1
  SQL="begin update_bv_securities( :P1, :P2, :P3,:P4) ;END;"
  Set SecQuery = SecDB.createsql(SQL, &H0&)
  上面是我實際使用中的一段例子,用到了一些參數,大家看一下就可以明白他的意思了,最后一句用的是PL/SQL塊,把幾個參數傳給這個塊,然后具體的任務可以交給這個存儲過程來完成。

  當第二次調用的時候,可以重新給這些參數賦值,然后執行Refresh方法,如下:
  SecDB.Parameters("P1").Value = V1
  SecDB.Parameters("P2").Value = V2
  SecDB.Parameters("P3").Value = V3
  SecDB.Parameters("P4").Value = V4
  SecQuery.Refresh
  在頻繁執行的SQL語句中與OraSqlStmt一同使用參數是比重復使用ExecuteSQL語句更為優化的方法。當執行OraSqlStmt中的Refresh方法時,該語句不必再被數據庫服務器解釋。在應用程序服務器上將能顯著地節省Oracle數據庫服務器的處理時間。使用參數和占位符還可以答應將本地的數據庫類型按本地的格式傳送到服務器上,因此能夠去除轉換的步驟并且減少在網格上傳輸的字節數。
  但是在我的實際使用中,發現這個方法在刷新頻率太快時很輕易出錯,而且效率的提高也不明顯。
  
  -------------------------
  昨天看著書抄了一個晚上,假如錯太多請看書吧《Oracle 8i Web開發指南》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荥阳市| 藁城市| 乐平市| 怀远县| 桂平市| 利津县| 青浦区| 沾益县| 大厂| 长丰县| 宁晋县| 信宜市| 自治县| 昌黎县| 桐乡市| 图木舒克市| 伊金霍洛旗| 宜城市| 遂川县| 托克逊县| 建昌县| 含山县| 罗甸县| 慈溪市| 岑巩县| 屏山县| 平谷区| 乌兰浩特市| 华坪县| 吴堡县| 新丰县| 茌平县| 莱阳市| 鄂温| 天全县| 郴州市| 合肥市| 平顶山市| 德钦县| 湘潭县| 兴宁市|