例如以下伪代码:
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 DBA 中无法查看表空间,是怎么回事?
- 如何实现横向排列数据
- 如何用form实现查询功能并导出到EXCEL?
- 如何将尾数强制变成整数,如果不是0的,要四舍五入变成0
- 急问:如何用pro*C实现unix操作系统下的Oracle数据库表的导出
- 怎样显示条件以外的内容!!!!
- 求索引语句两问1)表中无索引,新建一索引如何写2)表中已有两个索引,再新建一和前两者结合的索引语句怎么写
- 关于时间函数的问题!!
- 执行model语句报错
- 连接不上,但是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;
/