CREATE OR REPLACE TYPE T_TYPE AS OBJECT(VARCH VARCHAR2(20));CREATE OR REPLACE TYPE T_TABLE IS TABLE OF T_TYPE;
函数体:
create or replace function ABCDDD return T_TABLE is
AAA T_TABLE:=T_TABLE();
begin
AAA.EXTEND(1);
AAA(1).VARCH:='CC';
return(AAA);
end ;
测试:
DECLARE
BBB T_TABLE;
BEGIN
BBB:=ABCDDD(1);
FOR I IN 1..BBB.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(BBB(I).VARCH);
END LOOP;
END;
/
返回:
ORA-06530: Reference to uninitialized composite
ORA-06512: at "SCOTT.ABCDDD", line 10
ORA-06512: at line 4
不知函数体定义时哪里出错了。主要是因为T_TABLE是T_TYPE的数组。
可是不知怎么解决。
希望高手帮助
函数体:
create or replace function ABCDDD return T_TABLE is
AAA T_TABLE:=T_TABLE();
begin
AAA.EXTEND(1);
AAA(1).VARCH:='CC';
return(AAA);
end ;
测试:
DECLARE
BBB T_TABLE;
BEGIN
BBB:=ABCDDD(1);
FOR I IN 1..BBB.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(BBB(I).VARCH);
END LOOP;
END;
/
返回:
ORA-06530: Reference to uninitialized composite
ORA-06512: at "SCOTT.ABCDDD", line 10
ORA-06512: at line 4
不知函数体定义时哪里出错了。主要是因为T_TABLE是T_TYPE的数组。
可是不知怎么解决。
希望高手帮助
解决方案 »
- 菜鸟求教一个SQL语句怎么写,在线狂等............
- 有请大牛看看, 小弟到底错在哪里? ORA-01948
- 各位来看看这个sql 应该怎么写
- oracle
- dbms_scheduler的repeat_interval设置问题
- check约束问题
- 奇怪的ORA-00972错误
- 安装oracle的时候弹出ODPReg.exe-应用程序错误
- recover database using backup control file是什么意思?
- 在安装Oracle9i Application server 9.0.2.0.0时出现需要配置host文件
- 求救!!!解决办法 ORA-01555&ORA-06512
- Oracle 查询语句
先在頭部定義結構再在包體中使用
SQL> CREATE OR REPLACE PACKAGE FUN_PKG_TEST IS
2 -- DECLARE THE TYPES
3 TYPE T_TYPE IS RECORD(VARCH VARCHAR2(20));
4 TYPE T_TABLE IS TABLE OF T_TYPE;
5
6 -- PUBLIC FUNCTION AND PROCEDURE DECLARATIONS
7 FUNCTION ABCDDD RETURN T_TABLE;
8
9 END FUN_PKG_TEST;
10 /Package createdExecuted in 0.093 secondsSQL> CREATE OR REPLACE PACKAGE BODY FUN_PKG_TEST IS
2
3 -- FUNCTION AND PROCEDURE IMPLEMENTATIONS
4 FUNCTION ABCDDD RETURN T_TABLE IS
5 AAA T_TABLE:=T_TABLE();
6 BEGIN
7 AAA.EXTEND(1);
8 AAA(1).VARCH:='CC';
9 RETURN(AAA);
10 END;
11
12 END FUN_PKG_TEST;
13 /Package body createdExecuted in 0.016 secondsSQL> DECLARE
2 BBB FUN_PKG_TEST.T_TABLE;
3 BEGIN
4 BBB:=FUN_PKG_TEST.ABCDDD;
5 FOR I IN 1..BBB.COUNT LOOP
6 DBMS_OUTPUT.PUT_LINE(BBB(I).VARCH);
7 END LOOP;
8 END;
9 /CCPL/SQL procedure successfully completedExecuted in 0 seconds