存儲過程返回結果集
直接這么寫:
INSERT INTO TABLE1(field1,field2,...)
SELECT value1,value2,... from TABLE2 WHERE ...
存儲過程最後直接寫一個select 語句,外界就可以拿到這個結果集了,不需要用OUTPUT參數
Ⅱ 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
----將存儲過程返回的列值再重新插入源表中
Ⅲ Oracle如何看到存儲過程返回的結果集
自定義個變數來獲取返回結果,然後用個循環把結果列印出來
Ⅳ 存儲過程這樣寫執行後能返回一個數組結果集呢
在包里定義一個Type,類似於下面的
Type Public_Rec IS Record( --Pubilc_Rec類型名字,你可以隨意
id XXX.id%TYPE, -- id相當於map里的key,類型與XXX表裡的id欄位一致
name XXX.name%TYPE
);
你可以根據自己的需要豐滿上面的語句。
使用的時候,定義變數
rec_ Public_Rec;
select id, name into rec_ from XXX;
@SELECT_STRING=concat("select * into rec_ from student");
Ⅳ 我要創建一個oracle存儲過程,能返回查詢的結果集,然後可以調用這個結果集,求大俠指教
項目、版本多麼?
提供思路:
創建一個游標,將「項目」、「版本」先查出來賦給查詢語句,然後將查詢結果插入臨時表。
Ⅵ 如何對存儲過程返回的結果集進行分頁
這個在資料庫端比較好,你現在得結果集是全部的6w數據,不太好處理,不如修改下存儲過程,多增加幾個參數。增加個第幾頁,每頁顯示數目。
這樣直接在存儲過程中通過limit(mysql),或者是top直接獲取就可
Ⅶ oracle存儲過程怎麼返回結果集
你這不是已經寫好了嘛。
外層調用程序只要聲明變數mycursor並且作為參數傳到emp_pro存儲過程中,執行結束後就可以使用了。
Ⅷ 存儲過程如何把一個結果集放在一張表裡面並返回來
結果集有必要放在表裡面返回來,直接返回遊標就可以了,結果集也可以看作是張表的。
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中可以直接返回結果。
希望對你有幫助!
Ⅸ 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……謝謝
但是我是想執行一個存儲過程後,直接返回表裡所有數據,不要再去操作游標。