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

oracle存儲過程返回列表

發布時間: 2022-07-24 00:36:30

A. oracle中在存儲過程中怎麼返回值

第一個問題

oracle沒有inser
into

存儲過程
的語句格式,所以這個需要你根據實際要求換種思路做吧。
第二個問題:
sqlserver
:'a'+char(10)+'b'
oracle:'a'
||
chr(10)
||
'b'
sqlserver中的
char函數
在oracle中是chr,參數和
返回值
是一樣的。

B. 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值裡面的
... 按鈕,即可查看結果,由於不怎麼會應用這個編輯器,本想把圖片上傳給你,如有不解,再詳問,希望回答對樓主有幫助

C. 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>

D. 如何在oracle存儲過程中返回數據集

返回記錄集:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/

E. ORACLE 存儲過程怎麼返回臨時表結果集

我剛做的,參考下:
SQL> CREATE GLOBAL TEMPORARY TABLE REPROTTEST(
2 ID NUMBER,
3 ANAME VARCHAR2(20)
4 ) ON COMMIT DELETE ROWS;(也可以用PRESERVER ROWS,看實際需求)

Table created

SQL> create or replace procere report_month_responsibility(
2 o_cur out sys_refcursor)
3 as
4 begin
5 insert into reprottest(id,aname) values(1,'1');
6 open o_cur for select * from reprottest;
7 end report_month_responsibility;
8 /

Procere created

SQL> set serverout on
SQL> declare
2 v_id number;
3 v_aname varchar2(20);
4 o_cur sys_refcursor;
5 begin
6 report_month_responsibility(o_cur);
7 fetch o_cur into v_id,v_aname;
8 while o_cur%found loop
9 dbms_output.put_line('輸出結果:'||v_id||','||v_aname);
10 fetch o_cur into v_id,v_aname;
11 end loop;
12 commit;
13 end;
14 /

輸出結果:1,1

PL/SQL procere successfully completed

你的那個ORA-01031: insufficient privileges,是許可權不足的問題。
SQL代碼:

CREATE GLOBAL TEMPORARY TABLE REPROTTEST(
ID NUMBER,
ANAME VARCHAR2(20)
) ON COMMIT DELETE ROWS;

create or replace procere report_month_responsibility(
o_cur out sys_refcursor)
as
begin
insert into reprottest(id,aname) values(1,'1');
open o_cur for select * from reprottest;
end report_month_responsibility;

declare
v_id number;
v_aname varchar2(20);
o_cur sys_refcursor;
begin
report_month_responsibility(o_cur);
fetch o_cur into v_id,v_aname;
while o_cur%found loop
dbms_output.put_line('輸出結果:'||v_id||','||v_aname);
fetch o_cur into v_id,v_aname;
end loop;
commit;
end;
/

F. oracle存儲過程 查3張表返回結果集

select b.FROM_ACCOUNT, b.card_bin ,b.bank_name,b.TRADE_TIME,b.pay_orderid
from order o, bill b
where o.pay_orderid = b.pay_orderid
and o.status =2
union all
select b.FROM_ACCOUNT, b.card_bin ,b.bank_name,b.TRADE_TIME,b.pay_orderid
from order o,bank_card_record b
where o.pay_orderid = b.pay_orderid
and (o.status =2 or o.status is null)

G. oracle的存儲過程查詢整張表返回結果

創建返回結果集的函數

SQL> create or replace package pkg_HelloWorld as
2 -- 定義ref cursor類型
3 type myrctype is ref cursor;
4 --函數申明
5 function getHelloWorld return myrctype;
6 end pkg_HelloWorld;
7 /

程序包已創建。

SQL> CREATE OR REPLACE package body pkg_HelloWorld as
2 function getHelloWorld return myrctype
3 IS
4 return_cursor myrctype;
5 BEGIN
6 OPEN return_cursor FOR
7 SELECT 'Hello 1' AS a, 'World 1' AS B FROM al
8 UNION ALL
9 SELECT 'Hello 2' AS a, 'World 2' AS B FROM al;
10 return return_cursor;
11 END getHelloWorld;
12 end pkg_HelloWorld;
13 /

程序包體已創建。

註:Oracle 這里的函數,是一個返回遊標類型的函數, 不是像 SQL Server 的那種叫 「表值函數」 的東西。

因此下面的寫法會報錯。

SQL> SELECT * FROM pkg_HelloWorld.getHelloWorld();
SELECT * FROM pkg_HelloWorld.getHelloWorld()
*
第 1 行出現錯誤:
ORA-00933: SQL 命令未正確結束

SQL> SELECT pkg_HelloWorld.getHelloWorld() FROM al;

PKG_HELLOWORLD.GETHE
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

A B
------- -------
Hello 1 World 1
Hello 2 World 2

H. Oracle存儲過程返回表記錄總數

你應當吧這個結果放到變數里,存儲過程是沒有返回值的,這樣寫是不對的,這樣
select語句是不支持的create or replace procere ii
is
a varchar2(25);
begin
select count(*) into a from employees;
end ii;

這樣就可以執行了,
不過你可以把值放到數組里,自用列印命令列印出來

I. oracle存儲過程如何返回記錄集

存儲過程:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/

CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/
存儲函數:
CREATE OR REPLACE
package pkg_test as
type myrctype is ref cursor;

function get(intID number) return myrctype;
end pkg_test;
/

CREATE OR REPLACE
package body pkg_test as
function get(intID number) return myrctype is
rc myrctype; --定義ref cursor變數
sqlstr varchar2(500);
begin
if intID=0 then
--靜態測試,直接用select語句直接返回結果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--動態sql賦值,用:w_id來申明該變數從外部獲得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--動態測試,用sqlstr字元串返回結果,用using關鍵詞傳遞參數
open rc for sqlstr using intid;
end if;

return rc;
end get;

end pkg_test;
/

熱點內容
什麼配置可以算神機 發布:2024-10-06 21:52:09 瀏覽:421
兩條吊筋怎麼配置高度 發布:2024-10-06 21:46:22 瀏覽:490
安卓平板b站緩存文件位置 發布:2024-10-06 21:44:43 瀏覽:906
能緩存視頻的播放器 發布:2024-10-06 21:36:48 瀏覽:132
安卓接入點哪個好 發布:2024-10-06 21:25:01 瀏覽:450
ns伺服器怎麼搭建 發布:2024-10-06 20:56:22 瀏覽:806
自解壓功能 發布:2024-10-06 20:51:40 瀏覽:590
win7限制上傳速度 發布:2024-10-06 20:42:58 瀏覽:541
php判斷字元串是否空 發布:2024-10-06 20:42:48 瀏覽:116
行業均衡配置基金有哪些 發布:2024-10-06 20:42:11 瀏覽:194