c存儲過程數據集
❶ 存儲過程如何把一個結果集放在一張表裡面並返回來
結果集有必要放在表裡面返回來,直接返回遊標就可以了,結果集也可以看作是張表的。
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中可以直接返回結果。
希望對你有幫助!
❷ c程序該怎麼樣調用oracle存儲過程並獲取存儲過程中的輸出參數的值
我以前這樣用pro*c 這樣玩的,僅供參考
EXEC SQL EXECUTE
DECLARE
lsid varchar2(60);
lss_this_error_code number;
BEGIN
proctest(:ls_name,lsid); --ls_name 輸入參數 lss_id 輸出
:chId := lsid;-- lsid 輸出返回給C變數chId
END;
END-EXEC;
❸ 怎麼寫存儲過程,向資料庫中批量插入數據
用循環語句生成欄位值insert
SQL 如下:
createprocereInsertTest
as
begin
declare@iint
declare@svarchar(20)
set@i=1
while@i<=100
begin
select@s=cast(@iASvarchar(20))
insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')
SET@i=@i+1
end
end
❹ oracle存儲過程游標使用疑問
1、for t_name in (select ...) loop
這個是隱式游標,相當於一個結果集,隱式Cursor由系統自動打開和關閉。
exit when %notfound是配合fetch使用,沒有fetch就不需要。
你第一個存儲過程可以這樣寫:
create or replace procere d_1 is
begin
for cur in (select * from t_t) ---這個cur是隱式游標,無需定義,直接使用。
loop
dbms_output.put_line(cur.name);
end loop;
end;
/
2、使用的是標準的顯式游標
a 定義游標---Cursor [Cursor Name] IS;
b 打開游標---Open [Cursor Name];
c 操作數據---Fetch [Cursor name]
d 關閉游標---Close [Cursor Name]
希望能幫到你。