CREATE OR REPLACE PACKAGE PKG_RTN AS
TYPE RESULT_TYPE IS REF CURSOR;
PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE);END PKG_RTN; CREATE OR REPLACE package body PKG_RTN as
PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE) IS
BEGIN
OPEN RS_DATA FOR
SELECT * FROM contractinfo INNER JOIN.....; //这里的效率会很低吗?
END; 请教oracle的游标返回一个结果集,效率会低吗?
如果不用游标的方式,其它还有什么返回结果集方式效率会高啊,在sql server中都是用select语句返回一个结果集,到了oracle这边我担心执行的效率问题请那位帮忙解答一下谢谢
TYPE RESULT_TYPE IS REF CURSOR;
PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE);END PKG_RTN; CREATE OR REPLACE package body PKG_RTN as
PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE) IS
BEGIN
OPEN RS_DATA FOR
SELECT * FROM contractinfo INNER JOIN.....; //这里的效率会很低吗?
END; 请教oracle的游标返回一个结果集,效率会低吗?
如果不用游标的方式,其它还有什么返回结果集方式效率会高啊,在sql server中都是用select语句返回一个结果集,到了oracle这边我担心执行的效率问题请那位帮忙解答一下谢谢
可变数组的定义方法如下:
create or replace type testArray is varray(5) of number(3)
PL/SQL存储过程里调用可变数组作为输出参数:
create or replace function getTestArray return testArray
as
o_data testArray:= testArray ();
begin
for v_count in 1..5 loop
o_data.extend;
o_data(v_count):= v_count;
end loop;
return o_data;
end;
2.2.2 Java程序的编写
由存储过程返回的可变数组同样可以映射成java数组类型。但Java程序调用存储过程返回的可变数组方式和索引表方式却不相同,这一点应注意,具体方法如下:
public static void main( )
{
......
//调用存储过程
. OracleCallableStatement stmt =(OracleCallableStatement)conn.prepareCall ( "begin ? := getTestArray; end;" );
stmt.registerOutParameter( 1, OracleTypes.ARRAY," testArray" );
stmt.executeUpdate();
// 得到 ARRAY 对象
ARRAY simpleArray = stmt.getARRAY(1);
//转换为java数组
String[ ] values = (String[])simpleArray.getArray();
//输出数组内容
for( int i = 0; i < values.length; i++ )
System.out.println( "row " + i + " = '" + values[i] +"'" );
}
.....
for v_count in 1..5 loop // 请解释一下什么意思?能否写的详细点啊?sql转到oracle,感觉很多的东西要学啊,见笑。