例如以下伪代码:
CREATE OR REPLACE FUNCTION TestFunc(col TABLE_TYPE) RETURN VARCHAR IS
BEGINFOR i in col.firstVal..col.lastVal LOOP
Do something;
End LOOP;RETURN something;END;传进去的参数是类似于表的集合类型TABLE_TYPE,可以用for循环依次取得每一行数据值。
问题是这个TABLE_TYPE如何定义,在哪里定义?Oracle自带这样的数据类型吗
CREATE OR REPLACE FUNCTION TestFunc(col TABLE_TYPE) RETURN VARCHAR IS
BEGINFOR i in col.firstVal..col.lastVal LOOP
Do something;
End LOOP;RETURN something;END;传进去的参数是类似于表的集合类型TABLE_TYPE,可以用for循环依次取得每一行数据值。
问题是这个TABLE_TYPE如何定义,在哪里定义?Oracle自带这样的数据类型吗
解决方案 »
- 请教恢复oracle数据库问题
- 我在oracle新建的库中导入了表,但是在pl/sql中查看的时候却看到的都是系统的表,删除的时候出现递归错误,为什么?
- ORACLE error 1 in FDPSTP
- 列名不知道,只知道值,怎么查询.[在线给分]
- 档模式运行下,如何才能重新归档
- 求助:内存泄露、速度巨慢
- 请问在存储过程中怎样建立一个临时表?
- 我是oracle初学者,请高手指点,如何快速入门?
- 推荐几本Oracle书籍吧。
- DMP数据导入错误
- 连接不上,但是OracleOraDb10g_home1TNSListener已经是启动着的啊!
- oracle package里面procedure调用function的问题,在线等结果
Type Tabletype Is Table Of Davistest%Rowtype;
Tablerec Tabletype := Tabletype();
Procedure Testproc(Prec Davistest%Rowtype)
Is
Pragma Autonomous_Transaction;
Begin
Insert Into Davistest Values Prec;
Commit;
End;
Begin
Tablerec.Extend(1);
Tablerec(1).Name := 'Jack';
Tablerec(1).Course := 'English';
Tablerec(1).Score := 88;
Testproc(Tablerec(1));
--Tablerec(2).Name := 'Davis';
--Tablerec(2).Course := 'Math';
--Tablerec(2).Score := 83;
--Forall I In Tablerec.First .. Tablerec.Last
--Insert Into Davistest Values Tablerec(I);
End;
type TAB_TYPE is ref cursor;
end pkg_const;
/二, 利用表emp返回TAB_TYPE类型的数据CREATE OR REPLACE procedure emp_select(out_tab OUT PKG_CONST.TAB_TYPE) IS
BEGIN
OPEN out_tab FOR SELECT * FROM emp;
END;
/三. 取得emp表的数据DECLARE
l_tab PKG_CONST.TAB_TYPE;
l_tab_row EMP%ROWTYPE;
BEGIN
EMP_SELECT(l_tab);
loop
FETCH l_tab INTO l_tab_row;
EXIT WHEN l_tab%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Name = ' || l_tab_row.ename);
end loop;
END;
/