當前位置:首頁 » 存儲配置 » oracle存儲過程返回結果集

oracle存儲過程返回結果集

發布時間: 2022-06-16 21:46:16

『壹』 C#調用oracle存儲過程返回數據集

///<summary>
///執行存儲過程
///</summary>
///<paramname="storedProcName">存儲過程名</param>
///<paramname="parameters">存儲過程參數</param>
///<paramname="tableName">DataSet結果中的表名</param>
///<returns>DataSet</returns>
publicstaticDataSetRunProcere(stringstoredProcName,IDataParameter[]parameters,stringtableName)
{
using(OracleConnectionconnection=newOracleConnection(connectionString))
{
DataSetdataSet=newDataSet();
connection.Open();
OracleDataAdaptersqlDA=newOracleDataAdapter();
sqlDA.SelectCommand=BuildQueryCommand(connection,storedProcName,parameters);
sqlDA.Fill(dataSet,tableName);
connection.Close();
returndataSet;
}
}
///<summary>
///構建OracleCommand對象(用來返回一個結果集,而不是一個整數值)
///</summary>
///<paramname="connection">資料庫連接</param>
///<paramname="storedProcName">存儲過程名</param>
///<paramname="parameters">存儲過程參數</param>
///<returns>OracleCommand</returns>
(OracleConnectionconnection,stringstoredProcName,IDataParameter[]parameters)
{
OracleCommandcommand=newOracleCommand(storedProcName,connection);
command.CommandType=CommandType.StoredProcere;
foreach()
{
command.Parameters.Add(parameter);
}
returncommand;
}

『貳』 oracle存儲過程帶參返回結果集

create or replace procere p_cnt(
p_time in varchar2,---查詢的條件
p_cur out SYS_REFCURSOR)---游標返回

IS
v_sql varchar2(1000) :='';
v_date varchar2(20);

BEGIN
v_date := replace(p_time, '-', '');---時間的格式轉換
v_sql := 'select * from dapartment d where d.d_time ='''|| v_date||'''';
END;
OPEN p_cur FOR v_sql;

END p_cnt;

『叄』 菜鳥提問:oracle 存儲過程如何返回結果集,如果修改,在線等。

如果一個過程要返回一個結果集,那麼要引用游標來處理這個結果集。

有倆種方法:
一種是聲明系統游標,一種是聲明自定義游標,然後後面操作一樣,參數類型為
in out 或out
(1)聲明個人系統游標.(推薦)

create or replace p_temp_procere
(
cur_arg out sys_refcursor; --方法1
)
begin
open cur_arg for select * from tablename;
end
調用
declare
cur_calling sys_refcursor;
begin
p_temp_procere(cur_calling); --這樣這個游標就有值了
for rec_next in cur_calling loop
....
end loop;
end;

(2)在包頭中申明一個游表類型,然後調用者申明一個這個類型的游標變數,傳給返回遊標的存儲過程 ,存儲過程out這個結果集,這種方法很麻煩.游標類型不能像索引表一樣使用create or replace type方法來創建,所以只能在包中申明,並且需要使用/來執行,後面的存儲過程才認這個游標類型.(不推薦,但是建議要知道並且要會這種方式,畢竟它有它存在的道理)
--定義全局變數
create or replace package pkg_package
as
type type_cursor is ref cursor;
type type_record is record
(
test01 varchar2(32),
test02 varchar2(32),
test03 varchar2(32)
);
end;
/
--創建返回遊標的存儲過程
create or replace procere p_temp_procere
(
cur_out_arg out pkg_package.type_cursor
)
is
begin
open cur_out_arg for select * from test;
end;
/
--調用
declare
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
begin
p_temp_procere(cur_out_arg);
fetch cur_out_arg into rec_arg;
dbms_output.put_line(rec_arg.test01);
dbms_output.put_line(rec_arg.test02);
dbms_output.put_line(rec_arg.test03);
end;
----------------------------------~往上套格式就行啦~----------------------------------

記得採納哦~~

『肆』 我在oracle中創建存儲過程要返回結果集 是不是不能直接返回了 一定要用到游標或者包嗎

如果一個procere要返回一個結果集,那麼要引用游標來處理這個結果集。
create or replace procere Test
(
varEmpName emp.ename%type
)
As
begin ------會報錯.錯誤原因沒有into子句.
select * from emp where ename like '%'||varEmpName||'%';
end;

這個程序我們無法用into,因為在Oracle裡面沒有一個類型去接受一個結果集.這個時候我們可以聲明游標對象去接受他.

『伍』 oracle存儲過程如何返回一個結果集,一定要用ref cursor嗎存儲過程在pl/sql中是怎麼調用的,越詳細越好

知道包這個概念么?
---創建包頭

CREATE OR REPLACE PACKAGE PKG_User IS

TYPE T_CURSOR IS REF CURSOR;
PROCEDURE GET(p_user_id in varchar2,cur_out OUT T_CURSOR);
END PKG_User;
--創建包體

CREATE OR REPLACE PACKAGE BODY PKG_User IS
----Get by KeyId----------
PROCEDURE GET(p_user_id in varchar2,cur_out OUT T_CURSOR) IS
BEGIN
OPEN cur_out FOR
select user_id,
user_pid,
uname,
status,
nvl(company_id,-1) company_id,
nvl(dept_id,-1) dept_id,
nvl(station_id,-1) station_id,
nvl(subsys,-1) subsys,
nvl(user_type,-1) user_type,
keys
from TB_USER
where upper(user_id)=upper(p_user_id);
END ;
end PKG_User;
調用使用PKG_User.GET

『陸』 Oracle如何看到存儲過程返回的結果集

自定義個變數來獲取返回結果,然後用個循環把結果列印出來

『柒』 關於oracle存儲過程返回結果集的問題

游標返回sql是不能添加變數在裡面的,要使用動態的sql,
就是 定義 一個 v_sql varhcar2(8000) 的變數。
通過 v_sql := 'select * from tt where to_char(rent.plan_date,''yyyy'')='||new_years
然後 open rent_cur for v_sql;

『捌』 oracle存儲過程怎麼返回結果集

你這不是已經寫好了嘛。
外層調用程序只要聲明變數mycursor並且作為參數傳到emp_pro存儲過程中,執行結束後就可以使用了。

『玖』 oracle 存儲過程返回結果集怎麼實現用java如何調用這個存儲過程比如表scott下的emp表

1:首先你需要創建一個包,並定義你返回的游標的類型、存儲過程

create or replace package TEST_PKG is

type cur_emp is REF CURSOR;

procere test_proc (emps out cur_emp);

end TEST_PKG;

2:然後你再創建包體

create or replace package body TEST_PKG is

procere test_proc (emps out cur_emp)
as
begin
open emps for select * from emp;
end test_proc;
end TEST_PKG ;

3,通過JAVA調用

cstmt = conn.prepareCall("{call TEST_PKG .test_proc (?)}");
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();

//獲得結果集
rs = (ResultSet)cstmt.getObject(4);
while(rs.next()){......}

注意:游標類型需要你在連接未關閉之前進行本地持久化,不然連接關閉了就無法解析了哦^-^,如果還不懂可以聯系我!

熱點內容
幼兒園手指計演算法 發布:2024-12-29 15:52:16 瀏覽:695
c語言10的次方 發布:2024-12-29 15:49:24 瀏覽:995
豐田普拉多有哪些配置 發布:2024-12-29 15:48:41 瀏覽:498
c編程慣用法 發布:2024-12-29 15:47:44 瀏覽:773
mac安裝androidsdk 發布:2024-12-29 15:44:45 瀏覽:746
vm裝哪個安卓系統比較好 發布:2024-12-29 15:33:30 瀏覽:679
pca演算法python實現 發布:2024-12-29 15:33:19 瀏覽:209
中控考勤表密碼多少 發布:2024-12-29 15:31:41 瀏覽:998
在linux操作系統 發布:2024-12-29 15:30:58 瀏覽:624
安卓其他存儲空間 發布:2024-12-29 15:19:57 瀏覽:468