扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 數(shù)據(jù)庫(kù)開發(fā) >> 文章正文

學(xué)習(xí)Oracle10gRelease2新功能之RefCursor

Ref Cursor就是我們定義在服務(wù)器端的結(jié)果集的reference。 當(dāng)我們打開一個(gè)Ref Cursor的時(shí)候,沒有任何的數(shù)據(jù)返回到客戶端,相反,數(shù)據(jù)在服務(wù)器上的地址將會(huì)被返回到客戶端。這樣用戶就可以自己決定什么時(shí)間和以那種方式通過Ref Cursor去取數(shù)據(jù)!

  在以前版本的ODP.NET中,我們可以通過Ref Cursor取數(shù)據(jù),但是我們不能把Ref Cursor作為一個(gè)Input參數(shù)傳遞給PL/SQL的存儲(chǔ)過程和存儲(chǔ)函數(shù)。但是在Oracle Database 10g Release2,我們能夠很簡(jiǎn)單的把Ref Cursor作為Input參數(shù)傳遞給PL/SQL的存儲(chǔ)過程和存儲(chǔ)函數(shù)。這是Oracle Database 10g Release2的新功能。

  我們接下來就以例程的方式來向你介紹這個(gè)新功能。

  準(zhǔn)備數(shù)據(jù)庫(kù)

  我們要在數(shù)據(jù)庫(kù)中生成一個(gè)表和一個(gè)包,我們接下來的例子會(huì)用到。 

  請(qǐng)用HR用戶登錄數(shù)據(jù)庫(kù),然后運(yùn)行下面的腳本。

create table processing_result
(
 status varchar2(64)
);

create or replace package cursor_in_out as
type emp_cur_type is ref cursor return employees%rowtype;

procedure process_cursor(p_cursor in emp_cur_type);

end;

/

create or replace package body cursor_in_out as

procedure process_cursor(p_cursor in emp_cur_type) is
employee employees%rowtype;

begin
 loop
  fetch p_cursor into employee;
  exit when p_cursor%notfound;
  insert into processing_result
  values('Processed employee #' ||
  employee.employee_id || ': ' ||
  employee.first_name || ' ' ||
  employee.last_name);
 end loop;
end;
end;

/   創(chuàng)建.NET代碼

  數(shù)據(jù)庫(kù)已經(jīng)準(zhǔn)備好了,接下來我們就準(zhǔn)備創(chuàng)建.NET代碼。

using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace CursorInCursorOut
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 class Class1
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   // create connection to database
   // change for your environment
   string constr = "User Id=hr; Password=hr; Data Source=oramag; Pooling=false";
   OracleConnection con = new OracleConnection(constr);
   con.Open();

   // command and parameter objects to get ref cursor
   OracleCommand cmd = con.CreateCommand();
   cmd.CommandText = "begin open :1 for select * from employees where manager_id=101; end;";
   OracleParameter p_rc = cmd.Parameters.Add("p_rc", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);

  // get the ref cursor
  cmd.ExecuteNonQuery();

  // clear parameters to reuse
  cmd.Parameters.Clear();

  // command and parameter objects to pass ref cursor
  // as an input parameter
  cmd.CommandText = "cursor_in_out.process_cursor";
  cmd.CommandType = CommandType.StoredProcedure;
  OracleParameter p_input = cmd.Parameters.Add("p_input", OracleDbType.RefCursor, p_rc.Value,  ParameterDirection.Input);

  // process the input cursor
  cmd.ExecuteNonQuery();

  // clean up objects
  p_input.Dispose();
  p_rc.Dispose();
  cmd.Dispose();
  con.Dispose();
 }
}
}
 

  運(yùn)行上面的代碼,這個(gè)程序本身沒有輸出,但是我們可以通過SQL*PLUS很容易可以看到下面的輸出。

SQL> select * from processing_result;

STATUS

----------------------------------------

Processed employee #108: Nancy Greenberg
Processed employee #200: Jennifer Whalen
Processed employee #203: Susan Mavris
Processed employee #204: Hermann Baer
Processed employee #205: Shelley Higgins

5 rows selected.

  我這里只是給大家一個(gè)很簡(jiǎn)單的例子,希望大家充分應(yīng)用Oracle Database的新特性,使你的項(xiàng)目更加的穩(wěn)定,效率更高

作者:未知 | 文章來源:自學(xué)編程網(wǎng) | 更新時(shí)間:2008-1-8 18:32:16

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    oracle不能連接本地庫(kù)的解決方案
    數(shù)據(jù)庫(kù)學(xué)習(xí):Oracle應(yīng)用程序性能優(yōu)化
    ADO.Net中如何優(yōu)化Oracle大批量數(shù)據(jù)更新時(shí)的性能
    Oracle 10g同字節(jié)序跨平臺(tái)數(shù)據(jù)遷移的測(cè)試
    ORACLE中的日志值轉(zhuǎn)換成time_t
    如何利用sp_addlinkersrvlogin從oracle查詢數(shù)據(jù)
    數(shù)據(jù)學(xué)習(xí):Oracle數(shù)據(jù)庫(kù)備份方法之熱備份
    如何獲取Oracle當(dāng)前數(shù)據(jù)庫(kù)SCN值
    Oracle數(shù)據(jù)庫(kù)幾個(gè)常見問題如何解決?
    SQL-Server訪問類與ORACLE訪問類之間的轉(zhuǎn)換
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開發(fā)
    最新文章  
    ·Domino平臺(tái)的優(yōu)缺點(diǎn)分析
    ·oracle不能連接本地庫(kù)的解
    ·使用經(jīng)驗(yàn)整理-TestDirecto
    ·學(xué)習(xí)sqlserver數(shù)據(jù)庫(kù)的維度
    ·sqlserver 多用戶并發(fā)中如
    ·丟失日志文件后數(shù)據(jù)庫(kù)還能
    ·人工智能在數(shù)據(jù)庫(kù)sql語句編
    ·數(shù)據(jù)庫(kù)學(xué)習(xí):Oracle應(yīng)用程
    ·基礎(chǔ)知識(shí):軟件測(cè)試的要點(diǎn)
    ·技術(shù)文章:sqlserver 2008
    ·SQL Server虛擬內(nèi)存和物理
    ·在MySQL中 describe命令怎
    ·怎樣解決視圖刷新時(shí)出現(xiàn)的
    ·如果忘記了MySQL的root用戶
    ·基礎(chǔ)學(xué)習(xí):基于SQL的sysob
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    南木林县| 二连浩特市| 黄山市| 恭城| 延寿县| 汕头市| 廊坊市| 会东县| 沧州市| 漳州市| 韶关市| 武宁县| 临邑县| 靖远县| 嫩江县| 驻马店市| 兴义市| 历史| 陇南市| 仁寿县| 县级市| 靖安县| 镶黄旗| 收藏| 常宁市| 丹阳市| 新和县| 云龙县| 钟祥市| 称多县| 锡林浩特市| 锦屏县| 罗田县| 六盘水市| 萝北县| 明水县| 阿巴嘎旗| 田林县| 广德县| 梁山县| 弋阳县|