create or replace package pk_wt
istype mytype is ref cursor;--定義乙個變數
procedure p_wt(mycs out mytype); --宣告乙個過程
end;
create or replace package body pk_wt
isprocedure p_wt(mycs out mytype)
--定義乙個儲存過程
isbegin
--begin end,pascal 風格的語句
open mycs for select a,b from abc; --得到乙個select 的語句結果,用乙個游標來定位,類似乙個指標
end p_wt;
end pk_wt;
當我看見這兩段sql,突然恍然大悟,這不正是c++物件導向的結構嗎?如同在c++中,第一段在class中宣告成員函式和變數。第二段定義成員變數的函式體。查了一下資料,發現oracle的pl/sql正是物件導向的。
以下是在c#中使用前面的過程:
oraclecommand cmd =
new oraclecommand("pk_wt.p_wt", conn);
cmd.commandtype =
commandtype.storedprocedure;
oracleparameter p1 =
new oracleparameter("mycs", oracletype.cursor);
p1.direction = system.data.
parameterdirection.output;
cmd.parameters.add(p1);
oracledatareader da = cmd.executereader();
list
<
string> st = new
list
();while (da.read())
da.close();
Oracle定義包和過程,返回結果集(物件導向)
create or replace package pk wt istype mytype is ref cursor 定義乙個變數 procedure p wt mycs out mytype 宣告乙個過程 end create or replace package body pk wt ispr...
通過游標讀取oracle儲存過程返回的結果集
public jhskyzgtkrequest gettsthsdate st conn.preparecall proc st.registeroutparameter 1,oracle.jdbc.oracletypes.cursor st.execute stringbuffer sb new ...
Oracle 函式function之返回結果集
可以按照最後的寫。工作中常需要經過一段複雜邏輯處理後,得出的乙個結果集。並能夠將這個結果集作為乙個表看待,去進行關聯查詢 我一般採用建立函式function的方式來處理。建立包,宣告function和type create orreplace package pak tem astype date ...