返回一个嵌套表类型的集合,而这个嵌套表的类型我想定义成varray变长数组,请问可以实现吗?
就是说嵌套表的元素数据类型可以是我自己定义的一个变长数组吗??
9 个解决方案
#1
lz的方法应该可以
#2
我试了一下 好像不行啊
CREATE OR REPLACE PACKAGE PH_900 AS
TYPE SOK_VARRAY IS VARRAY(50) OF VARCHAR2(50);
TYPE SOK_REC IS TABLE OF SOK_VARRAY INDEX BY BINARY_INTEGER;
PROCEDURE PB_900(I_S_KAI_CODE IN VARCHAR2,
I_S_BUN_CODE IN VARCHAR2,
O_I_RTN_CNT OUT NUMBER,
O_V_SOK_REC OUT SOK_REC);
END PH_900;
CREATE OR REPLACE PACKAGE PH_900 AS
TYPE SOK_VARRAY IS VARRAY(50) OF VARCHAR2(50);
TYPE SOK_REC IS TABLE OF SOK_VARRAY INDEX BY BINARY_INTEGER;
PROCEDURE PB_900(I_S_KAI_CODE IN VARCHAR2,
I_S_BUN_CODE IN VARCHAR2,
O_I_RTN_CNT OUT NUMBER,
O_V_SOK_REC OUT SOK_REC);
END PH_900;
#3
嵌套表的元素数据类型不可以是变长数组吗?
#4
想不通,为什么不用返回结果集?我一直想问这个问题,楼主能不能给我讲一下这样使用的必要性
#5
要求返回结果集如下:
LEVEL0 CODE0 LEVEL1 CODE1 LEVEL2 CODE2 ...... LEVEL8 CODE8
0 AAAA 1 AABB 2 AACC 8 ASDF
0 ABAA 1 ABBB 2 ABCC 8 ZXCV
0 ACAA 1 ACBB 2 ACCC 8 QWER
0 ADAA 1 ADBB 2 ADCC 8 UIOP
...
这个列数不是固定的,要根据最底层的LEAVEL和CODE值往前查询,这一期数据是9列,上一期也可能是10列,当然对于本次查询的话,所有行的列数是固定的(根据检索条件变化)。
一开始我的想法就是,定义一个游标求出底层的LEVEL和CODE
再根据这个LEVEL和CODE求出整行数据(这个过程有点麻烦,所以用游标实现),想把它放到一个变长数组里,这个数组就作为返回集合的一个元素
呵呵 想了这么个笨办法 可是行不通
如果直接返回结果集的话,怎么用? 再定义一次游标?使用临时表? 还是什么
LEVEL0 CODE0 LEVEL1 CODE1 LEVEL2 CODE2 ...... LEVEL8 CODE8
0 AAAA 1 AABB 2 AACC 8 ASDF
0 ABAA 1 ABBB 2 ABCC 8 ZXCV
0 ACAA 1 ACBB 2 ACCC 8 QWER
0 ADAA 1 ADBB 2 ADCC 8 UIOP
...
这个列数不是固定的,要根据最底层的LEAVEL和CODE值往前查询,这一期数据是9列,上一期也可能是10列,当然对于本次查询的话,所有行的列数是固定的(根据检索条件变化)。
一开始我的想法就是,定义一个游标求出底层的LEVEL和CODE
再根据这个LEVEL和CODE求出整行数据(这个过程有点麻烦,所以用游标实现),想把它放到一个变长数组里,这个数组就作为返回集合的一个元素
呵呵 想了这么个笨办法 可是行不通
如果直接返回结果集的话,怎么用? 再定义一次游标?使用临时表? 还是什么
#6
create or replace package aaa
is
type cur is ref cursor;
procedure aa( Rst out cur );
end aaa;
create or replace package body aaa
is
procedure aa( Rst out cur )
is
begin
open Rst for
select * from table1;--你的查询sql
end;
end aaa;
is
type cur is ref cursor;
procedure aa( Rst out cur );
end aaa;
create or replace package body aaa
is
procedure aa( Rst out cur )
is
begin
open Rst for
select * from table1;--你的查询sql
end;
end aaa;
#7
select * from table1;--你的查询sql
这个地方我是用另外一个游标逐行返回的,不是写了一个大的select
我要建一个临时表 把他们一行一行插入
最后再用游标返回这个select 临时表?这样吗 或者什么办法
这个地方我是用另外一个游标逐行返回的,不是写了一个大的select
我要建一个临时表 把他们一行一行插入
最后再用游标返回这个select 临时表?这样吗 或者什么办法
#8
顶起来
#9
加入ORACLE的群吧;群号是:19312711
#1
lz的方法应该可以
#2
我试了一下 好像不行啊
CREATE OR REPLACE PACKAGE PH_900 AS
TYPE SOK_VARRAY IS VARRAY(50) OF VARCHAR2(50);
TYPE SOK_REC IS TABLE OF SOK_VARRAY INDEX BY BINARY_INTEGER;
PROCEDURE PB_900(I_S_KAI_CODE IN VARCHAR2,
I_S_BUN_CODE IN VARCHAR2,
O_I_RTN_CNT OUT NUMBER,
O_V_SOK_REC OUT SOK_REC);
END PH_900;
CREATE OR REPLACE PACKAGE PH_900 AS
TYPE SOK_VARRAY IS VARRAY(50) OF VARCHAR2(50);
TYPE SOK_REC IS TABLE OF SOK_VARRAY INDEX BY BINARY_INTEGER;
PROCEDURE PB_900(I_S_KAI_CODE IN VARCHAR2,
I_S_BUN_CODE IN VARCHAR2,
O_I_RTN_CNT OUT NUMBER,
O_V_SOK_REC OUT SOK_REC);
END PH_900;
#3
嵌套表的元素数据类型不可以是变长数组吗?
#4
想不通,为什么不用返回结果集?我一直想问这个问题,楼主能不能给我讲一下这样使用的必要性
#5
要求返回结果集如下:
LEVEL0 CODE0 LEVEL1 CODE1 LEVEL2 CODE2 ...... LEVEL8 CODE8
0 AAAA 1 AABB 2 AACC 8 ASDF
0 ABAA 1 ABBB 2 ABCC 8 ZXCV
0 ACAA 1 ACBB 2 ACCC 8 QWER
0 ADAA 1 ADBB 2 ADCC 8 UIOP
...
这个列数不是固定的,要根据最底层的LEAVEL和CODE值往前查询,这一期数据是9列,上一期也可能是10列,当然对于本次查询的话,所有行的列数是固定的(根据检索条件变化)。
一开始我的想法就是,定义一个游标求出底层的LEVEL和CODE
再根据这个LEVEL和CODE求出整行数据(这个过程有点麻烦,所以用游标实现),想把它放到一个变长数组里,这个数组就作为返回集合的一个元素
呵呵 想了这么个笨办法 可是行不通
如果直接返回结果集的话,怎么用? 再定义一次游标?使用临时表? 还是什么
LEVEL0 CODE0 LEVEL1 CODE1 LEVEL2 CODE2 ...... LEVEL8 CODE8
0 AAAA 1 AABB 2 AACC 8 ASDF
0 ABAA 1 ABBB 2 ABCC 8 ZXCV
0 ACAA 1 ACBB 2 ACCC 8 QWER
0 ADAA 1 ADBB 2 ADCC 8 UIOP
...
这个列数不是固定的,要根据最底层的LEAVEL和CODE值往前查询,这一期数据是9列,上一期也可能是10列,当然对于本次查询的话,所有行的列数是固定的(根据检索条件变化)。
一开始我的想法就是,定义一个游标求出底层的LEVEL和CODE
再根据这个LEVEL和CODE求出整行数据(这个过程有点麻烦,所以用游标实现),想把它放到一个变长数组里,这个数组就作为返回集合的一个元素
呵呵 想了这么个笨办法 可是行不通
如果直接返回结果集的话,怎么用? 再定义一次游标?使用临时表? 还是什么
#6
create or replace package aaa
is
type cur is ref cursor;
procedure aa( Rst out cur );
end aaa;
create or replace package body aaa
is
procedure aa( Rst out cur )
is
begin
open Rst for
select * from table1;--你的查询sql
end;
end aaa;
is
type cur is ref cursor;
procedure aa( Rst out cur );
end aaa;
create or replace package body aaa
is
procedure aa( Rst out cur )
is
begin
open Rst for
select * from table1;--你的查询sql
end;
end aaa;
#7
select * from table1;--你的查询sql
这个地方我是用另外一个游标逐行返回的,不是写了一个大的select
我要建一个临时表 把他们一行一行插入
最后再用游标返回这个select 临时表?这样吗 或者什么办法
这个地方我是用另外一个游标逐行返回的,不是写了一个大的select
我要建一个临时表 把他们一行一行插入
最后再用游标返回这个select 临时表?这样吗 或者什么办法
#8
顶起来
#9
加入ORACLE的群吧;群号是:19312711