当前位置:首页 » 存储配置 » 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

热点内容
mysql属于什么数据库 发布:2025-07-12 13:55:52 浏览:166
源码抓捕 发布:2025-07-12 13:47:34 浏览:873
安卓哪里有李小龙 发布:2025-07-12 13:31:49 浏览:439
苹果保存账号密码在哪里找 发布:2025-07-12 13:31:07 浏览:99
东北大学c语言考试题 发布:2025-07-12 13:26:40 浏览:756
sha256在线加密 发布:2025-07-12 13:19:06 浏览:228
vbnet创建数据库连接 发布:2025-07-12 13:15:34 浏览:233
为什么社保卡在社康还要密码 发布:2025-07-12 13:11:42 浏览:812
取随机数php 发布:2025-07-12 12:58:16 浏览:841
如何配置组合音响 发布:2025-07-12 12:53:54 浏览:94