sql server 的儲存過程返回結果集很簡單
oracle 儲存過程返回結果集怎麼這麼費勁?
過程返回記錄集:
create or replace package pkg_test
as type myrctype is ref cursor;
procedure get (p_id number, p_rc out myrctype);
end pkg_test;
/ create or replace package body pkg_test
as procedure get (p_id number, p_rc out myrctype)
is sqlstr varchar2 (500);
begin
if p_id = 0 then
open p_rc for
select id, name, ***, address, postcode, birthday
from student;
else
sqlstr :=
'select id,name,***,address,postcode,birthday
from student where id=:w_id';
open p_rc for sqlstr using p_id;
end if;
end get;
end pkg_test;
/ 函式返回記錄集:
建立帶ref cursor定義的包和包體及函式:
create or replace
package pkg_test as
/* 定義ref cursor型別
不加return型別,為弱型別,允許動態sql查詢,
否則為強型別,無法使用動態sql查詢;
*/ type myrctype is ref cursor;
--函式申明
function get(intid number) return myrctype;
end pkg_test;
/ create or replace
package body pkg_test as
--函式體
function get(intid number) return myrctype is
rc myrctype; --定義ref cursor變數
sqlstr varchar2(500);
begin
if intid=0 then
--靜態測試,直接用select語句直接返回結果
open rc for select id,name,***,address,postcode,birthday from student;
else
--動態sql賦值,用:w_id來申明該變數從外部獲得
sqlstr := 'select id,name,***,address,postcode,birthday from student where id=:w_id';
open rc for sqlstr using intid;
end if;
return rc;
end get;
end pkg_test;
/
請問Oracle儲存過程如何返回游標?
有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 begin open cur ar...
Oracle儲存過程返回游標
oracle儲存過程返回游標 有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 be...
oracle 儲存過程返回游標
示例,很多時候我們需要返回結果集,這個時候,我們就可以返回游標的方式給別人呼叫 create or replace procedure getprocontactinfowithpropid prop id in varchar2,outcursor out sys refcursor isbegi...