當前位置:首頁 » 存儲配置 » 存儲過程返回數據集

存儲過程返回數據集

發布時間: 2023-09-13 00:52:27

A. 幫忙寫個oracle 存儲過程,可以返回表的所有列的結果集

sql Server的存儲過程和函數均可以返回結果集不同的是,PL/SQL的存儲過程和函數均不直接提供返回數據集的方法,但可以通過返回類型對象來實現返回數據集的效果。具體思路為:
(1)創建包頭,在其中聲明類型和存儲過程,類型應該引用游標;
(2)創建包體,定義存儲過程,執行查詢,將查詢得到的結果集以游標句柄的形式返回。
說明:游標分為顯示游標和隱式游標,任何查詢結果默認都提供隱式游標,當前方案的重點在於使用游標取得查詢結果的句柄,由於游標被引用為類型,通過返回類型,即等效於(並不等同)返回數據集。

具體的案例如下:
--創建包頭
create or replace package mypackage1
as
--聲明類型,並引用游標
type cursorType is ref cursor;
--聲明存儲過程,兩個輸入參數,一個輸出參數,輸出遊標類型數據
procere prcGetGlobalAddress
(
cur in out mypackage1.cursorType --輸出參數,數據類型為引用游標的類型
);
end mypackage1;

--創建包體
create or replace package body mypackage1
as
--定義存儲過程
procere prcGetGlobalAddress
(
cur in out mypackage1.cursorType
)
as
begin
--返回得到分頁查詢結果集的游標句柄
open cur for
select * from mytable;
end prcGetGlobalAddress;

end mypackage1;

B. sql中如何通過存儲過程返回結果集

引用
4

oraclefans_
的回復:想麻煩了。。你直接返回遊標就是一個結果集合。。CREATE
OR
REPLACE
PROCEDURE
USP_RETN_VAL(
RETN_VAL_CUR
OUT
sys_refcursor)ISBEGIN
OPEN
RETN_VAL_CUR
FOR
SELECT
*
FROM
TBL1;END;調用declare
cur
sys_refcurso……謝謝
但是我是想執行一個存儲過程後,直接返回表裡所有數據,不要再去操作游標。

C. SQL SERVER怎麼獲取存儲過程返回的數據集

數據集可以用print的方式返回。

1、創建測試表、插入數據:

createtabletest
(idintnotnull,
namevarchar(10))


insertintotestvalues(1,'張三')
insertintotestvalues(2,'李四')

表裡數據如圖:

D. 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;
}

E. 如何在PB中執行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;

F. oracle 通過調用存儲過程,得到數據集

我也是初學者,不是什麼高手,根據我的理解提出我的看法,僅供參考:
(1)函數function的參數必須都是in類型的,必須要有返回值
它可以被sql語句或者存儲過程調用
例如:
--定義一個函數,返回傳入的參數本身
create or replace function TestFunOne(argsOne in varchar2) return varchar2 is
resultStr varchar2(500);
begin
resultStr := argsOne;
return(resultStr);
end TestFunOne;

sql語句中可以這樣用: update tableName t set t.columnName = TestFunOne('1')
存儲過程中可以這樣用:
create or replace procere getNameByFincode(inputStr in varchar2,
resultStr out varchar2) is

begin
resultStr := TestFunOne(inputStr);
end getNameByFincode;

(2)java程序中一般是直接執行sql語句或者調用存儲過程
java執行sql語句可以這樣:
String sql="update tableName t set t.columnName = TestFunOne('1')";
stmt.executeUpdate(sql);

java中調用存儲過程可以這樣:
CallableStatement callStmt = connection.prepareCall("call getNameByFincode(?,?)");

以上都是最簡單的例子,具體展開網上也都可以查閱,希望能解決你的問題O(∩_∩)O~

G. 怎樣讓SqlServer的存儲過程返回結果集

1、返回結果集

這是客戶端應用程序返回結果的最通用的方法。結果集是通過使用SELECT語句選擇數據產生的。結果集可以從永久表、臨時表或局部變數中產生。將結果返回到另一個存儲過程不是一種有效的方法。存儲過程不能訪問另一個存儲過程建立的結果集。

例如從永久表中返回結果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如從局部變數中創建結果集:

USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = 『172-32-1176』
SELECT @au_id
GO

熱點內容
android手機裝linux 發布:2024-12-01 00:35:14 瀏覽:1
php模塊配置 發布:2024-12-01 00:30:00 瀏覽:95
九成腳本 發布:2024-12-01 00:23:33 瀏覽:815
存儲內存和運行內存的區別 發布:2024-12-01 00:03:39 瀏覽:253
編譯狀態圖原理 發布:2024-11-30 23:54:22 瀏覽:738
谷歌搜索緩存伺服器地址 發布:2024-11-30 23:38:59 瀏覽:503
箍筋加密原因 發布:2024-11-30 23:33:38 瀏覽:416
千兆路由器有哪些配置 發布:2024-11-30 23:33:36 瀏覽:411
產品配置具體指哪些 發布:2024-11-30 23:28:21 瀏覽:16
apt編譯環境 發布:2024-11-30 23:28:12 瀏覽:382