Oracle 儲存過程返回結果集

2021-03-31 18:48:07 字數 1773 閱讀 3607

oracle 儲存過程返回結果集

1.返回陣列

在oracle後台建立乙個程式包或者儲存過程

connect scott/tiger;

create or replace package ado_callpkg as

type eid is table of number(4) index by binary_integer;

type ename is table of varchar2(40) index by binary_integer;

procedure getempnames (empid out eid,empname out ename);

end ado_callpkg;

create or replace package body ado_callpkg  as

procedure getempnames (empid out eid,empname out ename) is

cursor c1 is select employee_id,first_name||'',''||middle_initial||'',''||last_name as name from employee;

**t number default 1;

c c1%rowtype;

begin

open c1;

loop

fetch c1 into c;

empname(**t):=c.name;

empid(**t):=c.employee_id;

exit when c1%notfound;  -- process the data

**t :=**t+1;

end loop;

close c1;

end;

end ado_callpkg;

2 前台vb程式呼叫

dim ** as new adodb.connection

dim rs as new adodb.recordset

dim cmd as new adodb.***mand

dim str as string

str = ")}"

**.open "provider=msdaora.1;password=tiger;user id=scott;data source=oracle;persist security info=true"

with cmd

.***mandtext = str

.activeconnection = **

.***mandtype = adcmdtext

end with

rs.cursorlocation = aduseclient

rs.open cmd

do while not rs.eof

debug.print rs.fields(0).value & vbtab & rs.fields(1).value

rs.movenext

loop

總結1 oracle的後台儲存過程,應該通過乙個類似陣列並且帶有數字索引的變數返回,有多少個列,就有對應多少個變數

2 前台,呼叫的sql語句寫法要注意,

)}注意的細節,

(1) 要自己指定乙個數字,表示接受的行數大小,如果太小,而實際返回的記錄大於這個數字,會出錯

(2) 如果有輸入引數,應該在***mand中建立輸入引數,對應的地方用?替代,如

)}(3) output和你儲存函式的定義一致,引數名要一樣,次序也一樣,否則也會出錯。

oracle 儲存過程返回結果集

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

oracle 儲存過程 返回結果集

oracle儲存過程如何返回結果集 最簡單的方式 返回oracle的系統游標 create or replace procedure card count yljg v start date in varchar2,開始時間 v end date in varchar2,結束時間 v parento...

oracle 儲存過程 返回結果集

oracle儲存過程如何返回結果集 最簡單的方式 返回oracle的系統游標 create or replace procedure card count yljg v start date in varchar2,開始時間 v end date in varchar2,結束時間 v parento...