1. 程式人生 > >儲存過程&函式返回結果集

儲存過程&函式返回結果集

--建立測試表
create table t01(id integer,name varchar2(10));

--建立測試資料
insert into t01(id,name) values (1,'a');
insert into t01(id,name) values (2,'b');
insert into t01(id,name) values (3,'c');

--提交
commit;

--查詢表的資料
select * from t01;

--建立返回結果集的儲存過程(系統型別)
create or replace procedure p_getdatas(v_cur out sys_refcursor)
as
begin
  open v_cur for select id,name from t01;
end;

--測試結果的正確性
declare id t01.id%type;name t01.name%type;v_cur sys_refcursor;
begin
  p_getdatas(v_cur);
  loop
    fetch v_cur into id,name;
    exit when v_cur%notfound;
    dbms_output.put_line(name);
  end loop;
  close v_cur;
end;

--建立返回結果的函式(系統型別)
create or replace function f_getdatas
return sys_refcursor
as
  v_cur sys_refcursor;
begin
  open v_cur for select id,name from t01;
  return v_cur;
end;

--測試結果的正確性
select f_getdatas from dual;

--定義包(使用者自定義型別)
create or replace package pk_getdatas
as
  type t_cur is ref cursor;
  procedure p_result(v_cur out pk_getdatas.t_cur);
  function f_result return pk_getdatas.t_cur;
end;

--建立包(使用者自定義型別)
create or replace package body pk_getdatas
as
  procedure p_result(v_cur out pk_getdatas.t_cur)
    as
    begin
      open v_cur for select id,name from t01;
    end;
  function f_result
    return pk_getdatas.t_cur
    as
      v_cur pk_getdatas.t_cur;
    begin
      open v_cur for select id,name from t01;
      return v_cur;
    end;
end;

--測試結果的正確性
declare id t01.id%type;name t01.name%type;v_cur pk_getdatas.t_cur;
begin
  p_getdatas(v_cur);
  loop
    fetch v_cur into id,name;
    exit when v_cur%notfound;
    dbms_output.put_line(name);
  end loop;
  close v_cur;
end;

--測試結果的正確性
select pk_getdatas.f_result from dual;


相關推薦

儲存過程&函式返回結果

--建立測試表 create table t01(id integer,name varchar2(10)); --建立測試資料 insert into t01(id,name) values (1,'a'); insert into t01(id,name) value

C#呼叫Oracle儲存過程返回結果

1.建立一個儲存過程: createorreplaceprocedure GET_PERSON ( RC1 outsys_refcursor, RC2 outsys_refcursor ) is begin open RC1 for select * from PERSO

pl/sql 建立並執行oralce儲存過程,並返回結果

因為以前一直用sql server多,現在一下子用oracle ,工具什麼都不熟,侷限於sql server的思想  網上搜,和問朋友,跟我講了一大堆,什麼loop 啊,decalre啊,package啊,什麼命令視窗啊,什麼 sql plus啊,什麼不支援pl/sql啊.

oracle呼叫儲存過程函式返回結果

在程式開發中,常用到返回結果集的儲存過程,這個在MySQL和sql server 裡比較好處理,直接返回查詢結果就可以了,但在Oracle裡面 要 out 出去,就多了一個步驟,對於不熟悉的兄弟們還得出上一頭汗:),這裡我簡單介紹一下,以供參考,   1  定義包      

mysql在儲存過程中從結果給多個引數賦值的辦法

DECLARE var1 DATETIME; DECLARE var2 DATETIME; SELECT    t.f1, t.f2  into var1,var2 FROM    tableName t ; SELECT     class_id1,     atten

Sybase呼叫儲存過程返回結果

最近專案要用Sybase資料庫實現分頁,第一次使用Sybase資料庫,也是第一次使用他的儲存過程。2個多小時才呼叫成功,在此記錄: 專案架構:SSM 1、Sybase本身不支援分頁操作,需要寫儲存過程來呼叫,這是很坑的。儲存過程的內容暫且放下, 儲存過程名:query_xx

oracle 通過function 函式 返回結果

自己理解分三步走1.建立資料物件,用於儲存結果集中的結果。create or replace type room as object ( roomid varchar2(12), roomare

jdbc取mysql儲存過程多個結果

 先來返回結果格式: [ [ {"name":"分管公司1","id":"1000"}, {"name":"分管公司2","id":"1001"}, {"name":"分管公司3","id":"1014"},

C#呼叫ORACLE儲存過程返回結果

Oracle中scott使用者下建立儲存過程: (注:從9i開始有了sys_refcursor這種型別,在以前的Oracle版本中需要使用REF CURSOR,並且還需放在一個程式包中) create or replace procedure sp_getdept (result

Mybatis 呼叫儲存過程返回單/多結果的情況

 返回單結果集的情況: 引用: https://blog.csdn.net/a9529lty/article/details/24401423 儲存過程示例:  create or replace procedure Fsp_Plan_CheckPrj(v

oracle 儲存過程返回結果 (轉載)

好久沒上來了, 難道今天工作時間稍有空閒, 研究了一下oracle儲存過程返回結果集.        配合oracle臨時表, 使用儲存過程來返回結果集的資料讀取方式可以解決海量資料表與其他表的連線問題. 在儲存過程中先根據過濾條件從海量資料表中選出符合條件的記錄並存放到臨

python 呼叫mysql儲存過程返回結果

儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i

oracle儲存過程傳入in引數,返回結果

create or replace procedure proc_report_TEST(zhxshss in varchar2, pcursor out sys_refcursor) as begi

Mybatis呼叫Oracle返回結果儲存過程

Mapper.xml 配置   <resultMap type="emp" id="empMap">   <id property="empno" column="empno"/>   <result property="ename"

mybatis呼叫Oracle儲存過程返回結果

在開發中,有時需要關聯幾張表來進行一些複雜的計算,此時可採用建立一張臨時表,將每次的資料計算後先存入臨時表,然後通過Oracle的遊標返回。 在mybatis中的呼叫如下: //呼叫語法格式,需要構造一個resultMap,用來接收返回的結果集 <select id

關於oracle呼叫儲存過程返回結果

這兩天因為公司要求,去學習了下以前一直模模糊糊的儲存過程,記錄下關於返回結果集的問題。 要返回結果集,首先你必須有個遊標,它是記錄你的查詢集的。而定義一個遊標有好多方法: 1,你可以在包中定義。然後將遊標變數作為儲存過程引數的型別。 CREATE OR REPLACE P

java呼叫儲存過程 返回結果

Java程式碼呼叫儲存過程:public Map<String, Object> rankInfo(Map<String, Object> rankMap,String start,String end, String userId,String o

mybatis 呼叫 oracle 返回結果 儲存過程

轉:http://hi.baidu.com/jy4214/blog/item/192ad99004b09992a877a464.html 執行環境 struts2+spring3.0+mybatis Mapper配置 <select id="getSiteBySite

jdbc 呼叫 sql server 的儲存過程時“該語句沒有返回結果”的解決方法

在JDBC中呼叫SQL Server中的儲存過程時出現如下異常:  com.microsoft.sqlserver.jdbc.SQLServerException: 該語句沒有返回結果集。            at com.microsoft.sqlserver

[Oracle]高效的PL/SQL程式設計(五)--呼叫儲存過程返回結果

            Oracle.DataAccess.Client.OracleConnection oracleConnection1=new OracleConnection("data source=precolm2;user id=colmtest;password=colmtest");