當前位置:首頁 » 存儲配置 » 存儲過程返回表

存儲過程返回表

發布時間: 2023-10-25 12:46:22

A. 存儲過程如何把一個結果集放在一張表裡面並返回來

結果集有必要放在表裡面返回來,直接返回遊標就可以了,結果集也可以看作是張表的。

DB2的的解決方案:
1.聲明存儲過程的時候,在聲明之後添加 RESULT SETS 1,表示返回一個結果集,示例如下:
CREATE PROCEDURE YOUPRO(IN P_UserId INTEGER)
LANGUAGE sql
RESULT SETS 1
------------------------------------------------------------------------
-- SQL 存儲過程(獲取用戶信息)
------------------------------------------------------------------------
P1: BEGIN
--聲明會使用到的參數
.... ....
... .....
2.在存儲過程中聲明一個游標,然後返回,示例如下:
DECLARE C1 CURSOR WITH RETURN FOR SELECT *FROM TABLE;
OPEN C1;

Oracle的解決方案:
1.先定義一個包,示例如下:
create or replace package CursorPackage as
type my_cursor is ref cursor;
end CursorPackage;
2.在存儲過程返回參數使用這個定義的參數,示例如下:
create or replace procere YOUPRO(P_UserId IN NUMBER, C_Return OUT CursorPackage.my_cursor)IS ... ... ..
3.存儲過程中,給返回參數賦值,示例如下:
OPEN C_Return FOR SELECT * FROM TABLE;

Sql Server的解決方案

直接返回SELECT * FROM TABLE,SqlServer中可以直接返回結果。

希望對你有幫助!

B. 如何用mysql 的存儲過程 返回一個表

mysql好像不能返回一個表吧,你為什麼要返回這個表呢?mssql裡面可以寫一個表值函數,返回一個結果集,你這里是創建了一個表,還需要返回嗎?? 你的biao111已經存在在資料庫里了,你直接select不就行了。而且select
*
into
biao111
from
checi
這種用法mysql也不支持。你看看這樣能不能行?
DELIMITER
//
CREATE
PROCEDURE
proc_40()
BEGIN

CREATE
TABLE
biao111
SELECT
*
FROM
checi;

SELECT
*
FROM
biao111;
END

C. 如何用mysql 的存儲過程 返回一個表

mysql中要獲得存儲過程的返回值,可以增加一個out參數,用來返回。
mysql中存儲過程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;

D. 幫忙寫個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;

E. C# 存儲過程返回兩個結果集(兩張表),如何獲取兩張表中的數據

首先聲明一個方法 傳兩個參數 一個是 Sql 語句 一個是你的表的名字
public DataSet getDataSet(string SQLstr, string tableName)
{
我這里寫的是方法調用打開的資料庫連接
你自己改 代開數據敗此庫連接
getcon(); //打開與資料庫的連接
//創建一個SqlDataAdapter對象,並獲取指定數據表的信息
同樣 兩個參數 一個 Sql 語句 一個 是聲明的SqlConnection 連接對象
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr, My_con);
//創建DataSet對象
DataSet My_DataSet = new DataSet();
進行填充 SqlDataAdapter 實例化對象SQLda 下面的 Fill 方法 進行填充到DataSet中
一個是參數是你實例化的 DataSet 對象 一個是 你的表名
這里如果你是兩張表的話 那麼在填充一個就歷州OK 了
SQLda.Fill(My_DataSet, tableName);
//關閉資料庫的連接

con_close();
//返回DataSet對肢枯蔽象的信息
return My_DataSet;
採納哦 !祝你成功!

F. 如何創建MySQL存儲過程可以返回一個表類型的數據

如何創建MySQL存儲過程可以返回一個表類型的數據
首先需要知道「另一個存儲過程」的結果集的所有列的類型。
假設「另一個存儲過程」的名字是sp1,沒有參數,返回的結果集共3列,全部為int型,那麼「存儲過程」里添加一個與結果集列數相同的臨時表或表變數用於接收「另一個存儲過程」的結果集
如下
CREATE PROCEDURE sp2
AS
DECLARE @t table(a int,b int,c int)

INSERT INTO @t(a,b,c)
EXEC sp1

SELECT * FROM @t
使用SQLSERVER存儲過程可以很大的提高程序運行速度,簡化編程維護難度,現已得到廣泛應用。
創建存儲過程
和數據表一樣,在使用之前需要創建存儲過程,它的簡明語法是:

引用:
Create PROC 存儲過程名稱
[參數列表(多個以「,」分隔)]
AS
SQL 語句

例:

引用:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要輸出的參數
AS
BEGIN
-- 將uName的值賦給 @ostrUserName 變數,即要輸出的參數
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END

其中 Create PROC 語句(完整語句為Create PROCEDURE)的意思就是告訴SQL SERVER,現在需要建立一個存儲過程,upGetUserName 就是存儲過程名稱,@intUserId 和 @ostrUserName 分別是該存儲過程的兩個參數,注意,在SQL SERVER中,所有用戶定義的變數都以「@」開頭,OUTPUT關鍵字表示這個參數是用來輸出的,AS之後就是存儲過程內容了。只要將以上代碼在「查詢分析器」里執行一次,SQL SERVER就會在當前資料庫中創建一個名為「upGetUserName」的存儲過程。你可以打開「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇「存儲過程」,此時就可以在右邊的列表中看到你剛剛創建的存儲過程了(如果沒有,刷新一下即可)。
二、存儲過程的調用

之前已經創建了一個名為「upGetUserName」的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。

G. MYSQL如何把存儲過程所返回的結果集插入到表

從存儲過程返回表類型的值也有二種: 1.存儲過程使用浮標參數,即同時指定CURSOR VARYING OUTPUT項.調用者可以使用while及fetch循環遍歷該浮標. 2.直接將存儲過程返回的結果集插入到表中,即使用insert into 表名 exec 存儲過程.此種方式中注意存儲過程返回的結果集列與insert的列要完全對應,可以在insert中指定列名來保證對應關系. ------------------------------------------------------------------------------測試:------------------------------------------------------------------------------ ----建立測試用的臨時表 create table #tmp (colx int,coly int) insert into #tmp values(1,2) insert into #tmp values(2,3) insert into #tmp values(3,4) select * from #tmpGO----創建返回遊標的存儲過程 create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmp open @cur /*該過程返回遊標,該游標為colx列的查詢結果*/endGO----創建返回表的存儲過程 create proc sp_dasselect coly from #tmp /*該過程返回coly列的查詢結果*/go----創建用於調用以上二個存儲過程的存儲過程 create proc sp_easbegindeclare @x int declare @cur cursor ----接收游標,並遍歷游標 EXEC sp_c @cur OUTPUT fetch next from @cur into @x while (@@FETCH_STATUS = 0)beginprint @xfetch next from @cur into @xENDclose @curdeallocate @cur ----將存儲過程返回的列值再重新插入源表中 insert into #tmp(coly) EXEC sp_d select * from #tmpendGOEXEC sp_edrop proc sp_c drop proc sp_d

H. c#EF 執行存儲過程 返回數據列表 怎麼做

1.首先連接資料庫2.發出一下命令:DB2 -td@ -vf createSQLproc.DB2 createSQLproc.DB2文件中是創建存儲過程的SQL語句; -td 選項讓命令行處理程序使用@作為語句終止字元; -v 選項讓命令處理程序將命令文本回顯到標准輸出; -f 讓命令行處理程序...

I. Sqlserver存儲過程返回表,如何實現

代碼參考如下:
create proc p_abc @i int
as
--中間有個非常復雜的計算
select * from #tmp where fid=@i
go

create proc p_test @i int
as
set nocount on

create table #temp(.....)
insert into #temp
exec p_abc @i --執行這個語句後返回一個table,把這個返回結果插入到臨時表

go

熱點內容
龍村m腳本 發布:2024-11-29 17:38:10 瀏覽:784
linuxc配置文件 發布:2024-11-29 17:08:31 瀏覽:828
wow刷碎片腳本 發布:2024-11-29 15:58:24 瀏覽:592
明小子源碼 發布:2024-11-29 15:15:30 瀏覽:145
蘋果8plus什麼配置 發布:2024-11-29 14:16:36 瀏覽:677
androidmvp結構 發布:2024-11-29 14:16:34 瀏覽:536
androidsqlite命令 發布:2024-11-29 14:04:38 瀏覽:156
信用卡分期演算法 發布:2024-11-29 13:50:56 瀏覽:808
安卓手機dll文件為什麼打不開 發布:2024-11-29 13:40:49 瀏覽:1003
百分之五十石碳酸怎麼配置 發布:2024-11-29 13:38:56 瀏覽:974