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

oracle存儲過程有返回值

發布時間: 2025-01-12 23:30:34

❶ Oracle中 存儲過程,過程和函數有什麼區別和聯系

過程:函數和存儲過程的統稱。

函數:有且僅有一個返回值,可以用於sql語句中。 如:x := get_X(),select get_X() from al,返回值為函數調用的結果。

存儲過程:無返回值。要返回結果,必須聲明為out參數。
如:sp_x(x,y,z),x和y為in類型參數,z為out/in out類型參數。

在oracle中,封裝工具還有自定義類型、包等。包可以封裝過程和函數,包頭類似java中的介面,包體類似JAVA中實現介面的類。

❷ oracle 存儲過程返回結果集怎麼實現用java如何調用這個存儲過程比如表scott下的emp表

1:首先你需要創建一個包,並定義你返回的游標的類型、存儲過程

create or replace package TEST_PKG is

type cur_emp is REF CURSOR;

procere test_proc (emps out cur_emp);

end TEST_PKG;

2:然後你再創建包體

create or replace package body TEST_PKG is

procere test_proc (emps out cur_emp)
as
begin
open emps for select * from emp;
end test_proc;
end TEST_PKG ;

3,通過JAVA調用

cstmt = conn.prepareCall("{call TEST_PKG .test_proc (?)}");
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();

//獲得結果集
rs = (ResultSet)cstmt.getObject(4);
while(rs.next()){......}

注意:游標類型需要你在連接未關閉之前進行本地持久化,不然連接關閉了就無法解析了哦^-^,如果還不懂可以聯系我!

❸ oracle存儲過程中調用帶返回參數的存儲過程

1、return返回值類型:
declare v_return_value number;
v_return_value := spname();
dbms_output.putline(v_return_value);
2、out返回
declare v_return_value number;
spname(:v_return_value);
dbms_output.putline(v_return_value);

❹ Oracle 存儲過程和函數的區別

Oracle中函數和存儲過程僅體現在一個地方:


  1. 函數有返回值,而存儲過程沒有返回值(當然,兩者都可以通過定義out參數來實現返回值)


其實,Oracle函數和存儲過程差別很小,對比其他資料庫,比如SqlServer:

  1. sqlserver中,函數是不能存在非select的dml語句的,換句話說,函數中,sqlserver是不能出現update、delete、insert等語句的

  2. 而Oracle中,是十分自由和寬容的,update、delete、insert等語句都可以出現

  3. 但因為Oracle的自由度,會引起其它一些問題:如果使用C#來調用Oracle的函數時,會出現因函數含有update等語句而無法調用,只能換成存儲過程或者在函數外再加一層存儲過程來實現調用。

❺ oracle中的存儲過程如何返回查詢到的多個值

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;

Package created.

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 'SELECT ''Hello'' AS a, ''World'' AS B FROM al';
7 return return_cursor;
8 END getHelloWorld;
9 end pkg_HelloWorld;

Package body created.

SQL> SELECT pkg_HelloWorld.getHelloWorld FROM al;
GETHELLOWORLD
--------------------
CURSOR STATEMENT : 1
CURSOR STATEMENT : 1
A B
---------- ----------
Hello World

熱點內容
wincc腳本從入門到精通 發布:2025-05-09 19:35:39 瀏覽:894
網路電腦配置哪個好 發布:2025-05-09 19:35:02 瀏覽:273
函數中未指定存儲類別 發布:2025-05-09 19:24:45 瀏覽:131
大話西遊2腳本錯誤解決方法 發布:2025-05-09 19:23:24 瀏覽:898
我的世界伺服器op掛下載 發布:2025-05-09 19:23:23 瀏覽:647
政府配置哪些資源 發布:2025-05-09 19:21:57 瀏覽:231
怎麼注銷電腦密碼 發布:2025-05-09 19:18:47 瀏覽:148
台灣中華電信大型伺服器雲伺服器 發布:2025-05-09 19:09:08 瀏覽:408
oracle11g編程 發布:2025-05-09 19:08:52 瀏覽:740
玩游戲選哪個安卓 發布:2025-05-09 19:02:55 瀏覽:47