濮阳杆衣贸易有限公司

主頁 > 知識庫 > oracle 存儲(chǔ)過程返回 結(jié)果集 table形式的案例

oracle 存儲(chǔ)過程返回 結(jié)果集 table形式的案例

熱門標(biāo)簽:地圖標(biāo)注坐標(biāo)圖標(biāo) 鶴壁電話機(jī)器人價(jià)格 地圖標(biāo)注效果的制作 手機(jī)地圖標(biāo)注門店 安陽企業(yè)電銷機(jī)器人供應(yīng)商 網(wǎng)貸外呼系統(tǒng)合法嗎 電銷套路機(jī)器人 杭州網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營商 汽車4s店百度地圖標(biāo)注店

--sys_refcursor 和 cursor 優(yōu)缺點(diǎn)比較

優(yōu)點(diǎn)比較

優(yōu)點(diǎn)一:

sys_refcursor,可以在存儲(chǔ)過程中作為參數(shù)返回一個(gè)table格式的結(jié)構(gòu)集(我把他認(rèn)為是table類型,容易理解,其實(shí)是一個(gè)游標(biāo)集), cursor 只能用在存儲(chǔ)過程,函數(shù),包等的實(shí)現(xiàn)體中,不能做參數(shù)使用。

優(yōu)點(diǎn)二:

sys_refcursor 這東西可以使用在包中做參數(shù),進(jìn)行數(shù)據(jù)庫面向?qū)ο箝_放。哈哈。我喜歡。cursor就不能。

create or replace procedure p_test(p_cur out sys_refcursor) 
as 
begin 
   open p_cur for select * from emp; 
end p_test; 
declare
p_cur sys_refcursor;
i emp%rowtype;
begin
 p_test(p_cur);
 loop fetch p_cur 
  into i;
  exit when p_cur%notfound;
  DBMS_OUTPUT.PUT_LINE('---'||i.ename||'---'||i.empno);
  end loop;
  close p_cur;
end;

補(bǔ)充:Oracle存儲(chǔ)過程返回select * from table結(jié)果

1.首先建立一個(gè)包

create or replace package LogOperation is
 type listLog is ref cursor;
 procedure PCenterExamine_sel(listCenterExamine out listlog,testlist out listLog,numpage in decimal);
end;

2.建立包中的主體

create or replace package body LogOperation is
 procedure PCenterExamine_sel
 (
  listCenterExamine out listlog,
  testlist out listlog,
  numpage in decimal
 ) 
 as
 begin
  open listCenterExamine for select * from Log_CenterExamine;
  open testlist for select * from Log_CenterExamine;
 end;
end;

3.在程序中調(diào)用存儲(chǔ)過程的值

public static DataSet RunProcedureGetDataSet(string storedProcName, OracleParameter[] parameters)
    {
      string connectionString ="192.168.1.1/db";
      using (OracleConnection connection = new OracleConnection(connectionString))
      {
        DataSet dataSet = new DataSet();
        connection.Open();
        OracleDataAdapter sqlDA = new OracleDataAdapter();
        sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
        sqlDA.Fill(dataSet, "dt");
        connection.Close();
        return dataSet;
      }
    }
private static OracleCommand BuildQueryCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
    {
      OracleCommand command = new OracleCommand(storedProcName, connection);
      command.CommandType = CommandType.StoredProcedure;
      foreach (OracleParameter parameter in parameters)
      {
        command.Parameters.Add(parameter);
      }
      return command;
    }

4.有幾個(gè)out的ref cursor,變量ds中就用幾個(gè)DataTable。并且輸入?yún)?shù) indecimal也不會(huì)受影響,并且可以參加存儲(chǔ)過程的運(yùn)算

OracleParameter[] paramDic = { 
          new OracleParameter("listCenterExamine",OracleType.Cursor),
          new OracleParameter("testlist",OracleType.Cursor),
          new OracleParameter("numpage",OracleType.Int32)};
        paramDic[0].Direction = ParameterDirection.Output;
        paramDic[1].Direction = ParameterDirection.Output;
        paramDic[2].Value = 1;
        ds = Model.OracleHelper.RunProcedureGetDataSet("LogOperation.PCenterExamine_sel", paramDic);

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • oracle通過存儲(chǔ)過程上傳list保存功能
  • 解決PL/SQL修改Oracle存儲(chǔ)過程編譯就卡死的問題
  • 關(guān)于Oracle存儲(chǔ)過程和調(diào)度器實(shí)現(xiàn)自動(dòng)對數(shù)據(jù)庫過期數(shù)據(jù)清除的問題
  • Oracle如何批量將表中字段名全轉(zhuǎn)換為大寫(利用簡單存儲(chǔ)過程)
  • Spring boot調(diào)用Oracle存儲(chǔ)過程的兩種方式及完整代碼
  • oracle調(diào)試存儲(chǔ)過程的過程詳解
  • Oracle如何使用PL/SQL調(diào)試存儲(chǔ)過程
  • Oracle存儲(chǔ)過程案例詳解

標(biāo)簽:泰安 柳州 南陽 銀川 酒泉 河源 梧州 焦作

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle 存儲(chǔ)過程返回 結(jié)果集 table形式的案例》,本文關(guān)鍵詞  oracle,存儲(chǔ),過程,返回,結(jié)果,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《oracle 存儲(chǔ)過程返回 結(jié)果集 table形式的案例》相關(guān)的同類信息!
  • 本頁收集關(guān)于oracle 存儲(chǔ)過程返回 結(jié)果集 table形式的案例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    信丰县| 临武县| 含山县| 沁源县| 阳东县| 栾川县| 南安市| 浦东新区| 凉城县| 仪陇县| 武义县| 布尔津县| 广安市| 任丘市| 开江县| 天水市| 江阴市| 普定县| 腾冲县| 海原县| 呼图壁县| 乌鲁木齐县| 远安县| 临安市| 池州市| 南乐县| 庄河市| 客服| 乐至县| 碌曲县| 泸西县| 孟津县| 阳高县| 和政县| 沙坪坝区| 济宁市| 临城县| 喀什市| 漾濞| 平原县| 光山县|