Ⅰ 在Oracle存儲過程中查詢的數據結果怎樣返回
oracle
跟ms不一樣。
要返回表的記錄數據,只能通過游標,或者自定義對象數組在存儲過程中組裝好後返回。
Ⅱ Oracle存儲過程怎麼返回結果
這個存儲過程你可以在TEST的環境下查看結果,不過你需要隱式游標來進行操作,那樣才能看到,具體步驟如下:
1、首先我們要藉助游標,因此需要先定義一個返回類型的游標
create or replace package type_difinition
as
type mycursor is ref cursor;
end type_difinition;
2、改寫你的存儲過程,要想查看執行sql後結果需要一個返回參數,這個參數即上面定義的游標
類型
create or replace procere select_pro(
p_result out type_difinition.mycursor -- 返回結果
)
is
syn_sql varchar2(200) default '';
begin
syn_sql := 'select * from emp';
-- 此處打開游標,並把需執行的SQL賦值給游標
open p_result for syn_sql;
end select_pro;
3、執行編譯通過後,右鍵點擊存儲過程的名字,跳出框,選擇Test一項,進入Test界面
4、點擊編譯、再點擊執行
5、Test界面的底部界面,有個Variable Type value的列表,此時你可以點擊Value值裡面的
... 按鈕,即可查看結果,由於不怎麼會應用這個編輯器,本想把圖片上傳給你,如有不解,再詳問,希望回答對樓主有幫助
Ⅲ oracle如何執行存儲過程以及如何返回一個table
-- 定義類型
CREATE OR REPLACE TYPE MyTable AS OBJECT(A int, B int, C int);
/
CREATE OR REPLACE TYPE MyTableResult IS TABLE OF MyTable;
/
CREATE OR REPLACE FUNCTION getTestTable return MyTableResult
IS
-- 預期返回結果.
return_Result MyTableResult := MyTableResult();
BEGIN
-- 結果追加一行.
return_Result.EXTEND;
-- 設置結果內容.
return_Result(return_Result.COUNT) := MyTable(A => 1, B=>2, C=>3);
-- 結果追加一行.
return_Result.EXTEND;
-- 設置結果內容.
return_Result(return_Result.COUNT) := MyTable(A => 4, B=>5, C=>6);
-- 結果追加一行.
return_Result.EXTEND;
-- 設置結果內容.
return_Result(return_Result.COUNT) := MyTable(A => 7, B=>8, C=>9);
return return_Result;
END getTestTable;
/
SQL> SELECT
2 A, B, C
3 FROM
4 table( getTestTable() );
A B C
---------- ---------- ----------
1 2 3
4 5 6
7 8 9
SQL>
Ⅳ Oracle通過存儲過程如何正確返回數據集
typeFuxjResultSetisrefcursor; 還可以定義其他內容 endFuxjPackage; 再定義Oracle存儲過程: (sDMinchar,sMCinchar,pRecCurinoutFuxjPackage.FuxjResultSet)asbeginupdatefuxjExamplesetmc=sMCwheredm=sDM;ifSQL%ROWCOUNT=0thenrollback;openpRecCurfor select'0'resfromal;elsecommit;openpRecCurfor select'1'resfromal;endif;end;和 (sDMinchar,sMCinchar,pRecCurinoutFuxjPackage.FuxjResultSet)asbegininsertintoFuxjExample(dm,mc)values(sDM,sMC);commit;openpRecCurfor select*fromFuxjExample;end;二、在Delphi中調用返回數據集的Oracle存儲過程 可以通過TstoredProc或TQuery控制項來調用執行返回數據集的存儲,數據集通過TstoredProc或TQuery控制項的參數返回源碼天空 ,注意參數的DataType類型為ftCursor,而參數的ParamType類型為ptInputOutput。 使用TstoredProc執行UpdatefuxjExample的相關設置為: objectStoredProc1:TStoredProc
Ⅳ oracle 存儲過程中怎麼返回參數
存儲過程定義參數時,變數名的後面加上關鍵字OUT,在存儲過程執行中對這個參數進行賦值。等存儲過程執行結束之後,可以在sqlplus中獲得這個參數返回的值。
Ⅵ oracle中在存儲過程中怎麼返回值
第一個問題
:
oracle沒有inser
into
表
存儲過程
的語句格式,所以這個需要你根據實際要求換種思路做吧。
第二個問題:
sqlserver
:'a'+char(10)+'b'
oracle:'a'
||
chr(10)
||
'b'
sqlserver中的
char函數
在oracle中是chr,參數和
返回值
是一樣的。
Ⅶ 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存儲過程怎麼返回結果集
你這不是已經寫好了嘛。
外層調用程序只要聲明變數mycursor並且作為參數傳到emp_pro存儲過程中,執行結束後就可以使用了。
Ⅸ 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 中運行存儲過程作為返回值
oracle可以使用out型參數返回值,例如:
--查詢某商品編號是否存在,返回查詢狀態
createorreplaceprocereproc_getGood
(
param_shopIdnumber,--商品編號
param_flagoutnumber--查詢狀態0不存在
)
as
declarev_countnumber(1);
begin
selectcount(*)intov_countfromtb_goodswhereshopid=param_shopid;
ifv_count=0then
param_flag:=0;
else
param_flag:=1;
endif;
end;