Oracle 儲存過程返回結果集 (轉)
1.返回陣列 (作者:/Message_Board/Send.?sendto=enhydraboy" target=_blank>enhydraboy(亂舞的浮塵) )
在後臺建立一個包或者過程
connect tt/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 employee_id,first_name||','||Middle_Initial||','||last_name as name from employee;
cnt NUMBER DEFAULT 1;
c c1%ROWTYPE;
BEGIN
open c1;
L
FETCH c1 INTO c;
empname(cnt):=c.name;
empid(cnt):=c.employee_id;
EXIT WHEN c1%NOTFOUND; -- process the data
cnt :=cnt+1;
END LOOP;
close c1;
END;
end ado_callpkg;
2 前臺vb程式
Dim cn As New ADO.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim str As String
str = "{call ado_callpkg.getEmpNames({resultset 100,empid,empname})}"
cn.Open "Provr=MSDAORA.1;Pass=tiger;User ID=scott;Data =ORACLE;Persist Security Info=True"
With cmd
.CommandText = str
.ActiveConnection = cn
.CommandType = adCmdText
End With
rs.CursorLocation = adUseClient
rs.Open cmd
Do While Not rs.EOF
De.Print rs.Fields(0).Value & vbTab & rs.Fields(1).Value
rs.MoveNext
Loop
------------
總結
1 oracle的後臺儲存過程,應該透過一個類似陣列並且帶有數字的變數返回,有多少個列,就有對應多少個變數
2 前臺,呼叫的語句寫法要注意,
{call
注意的細節,
(1)
(2) 如果有輸入引數,應該在command中建立輸入引數,對應的地方用?替代,如
{call ado_callpkg.getEmpNames(?,{resultset 100,empid,empname})}
(3) output和你儲存的定義一致,引數名要一樣,次序也一樣,否則也會出錯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-956699/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 儲存過程返回結果集|轉|Oracle儲存過程
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- Oracle中過程/函式返回結果集Oracle函式
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- 用.NET呼叫oracle的儲存過程返回記錄集 (轉)Oracle儲存過程
- 儲存過程返回資料集儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- 儲存過程結果進行查詢 select 存過過程儲存過程
- mybatis儲存過程返回listMyBatis儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- jdbc 呼叫 sql server 的儲存過程時“該語句沒有返回結果集”的解決方法JDBCSQLServer儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- iOS FMDB有返回結果集和無返回結果集iOS
- Oracle儲存過程Oracle儲存過程
- (轉)如何oracle除錯儲存過程Oracle除錯儲存過程
- MySQL 儲存過程空結果集錯誤Error 1329 No data 的異常處理MySql儲存過程Error
- 用java呼叫oracle儲存過程總結JavaOracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- JAVA儲存過程(轉)Java儲存過程
- 執行Sybase儲存過程並返回ResultSet儲存過程
- sqlserver 常用儲存過程集錦SQLServer儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- Oracle儲存過程學習Oracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- oracle--08儲存過程Oracle儲存過程
- Oracle查詢結果 儲存為XMLOracleXML