检索用户定义的内容 table
retrieve content o user defined table
我想做的是,在函数中填充 table(使用用户定义的类型),然后对 table 执行 select。
我做了如下操作:
1/定义自定义类型:
create or replace TYPE "MVT_CD" AS OBJECT
(
ACCOUNTPK NUMBER(19,0),
ACCOUNTCODE VARCHAR2(255)
)
2/ 定义一个 table 类型
create or replace TYPE "MVT_TAB_CD" AS TABLE OF MVT_CD
3/声明我的功能
create or replace FUNCTION OUTPUT_CD (BUS_DAY VARCHAR2, CODE_AGENCE VARCHAR2) RETURN CD_OUTPUT_TABLE AS
RETVAL CD_OUTPUT_TABLE := CD_OUTPUT_TABLE();
...
MVT_TAB MVT_TAB_CD := MVT_TAB_CD();
...
BEGIN
MVT_TAB.EXTEND;
MVT_TAB(MVT_TAB.COUNT) := MVT_CD(123, ' ');
MVT_TAB.EXTEND;
MVT_TAB(MVT_TAB.COUNT) := MVT_CD(456, ' ');
FOR I IN (
SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB
)LOOP
RETVAL.EXTEND;
RETVAL(RETVAL.COUNT) := I.ACCOUNTPK|| I.ACCOUNTCODE;
END LOOP;
...
END
我使用的变量称为:MVT_TAB,我想做一个 select 来检索它的内容,并将后者用于我函数的另一部分。
当我尝试使用 Comile 时,我在行中遇到了:ORA-000942:
SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB
我考虑过使用BULK COLLECT
,但我不知道我的方法是否合适。
您只需将结构转换为 table:
SELECT ACCOUNTPK, ACCOUNTCODE FROM table(MVT_TAB)
我想做的是,在函数中填充 table(使用用户定义的类型),然后对 table 执行 select。
我做了如下操作:
1/定义自定义类型:
create or replace TYPE "MVT_CD" AS OBJECT
(
ACCOUNTPK NUMBER(19,0),
ACCOUNTCODE VARCHAR2(255)
)
2/ 定义一个 table 类型
create or replace TYPE "MVT_TAB_CD" AS TABLE OF MVT_CD
3/声明我的功能
create or replace FUNCTION OUTPUT_CD (BUS_DAY VARCHAR2, CODE_AGENCE VARCHAR2) RETURN CD_OUTPUT_TABLE AS
RETVAL CD_OUTPUT_TABLE := CD_OUTPUT_TABLE();
...
MVT_TAB MVT_TAB_CD := MVT_TAB_CD();
...
BEGIN
MVT_TAB.EXTEND;
MVT_TAB(MVT_TAB.COUNT) := MVT_CD(123, ' ');
MVT_TAB.EXTEND;
MVT_TAB(MVT_TAB.COUNT) := MVT_CD(456, ' ');
FOR I IN (
SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB
)LOOP
RETVAL.EXTEND;
RETVAL(RETVAL.COUNT) := I.ACCOUNTPK|| I.ACCOUNTCODE;
END LOOP;
...
END
我使用的变量称为:MVT_TAB,我想做一个 select 来检索它的内容,并将后者用于我函数的另一部分。
当我尝试使用 Comile 时,我在行中遇到了:ORA-000942:
SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB
我考虑过使用BULK COLLECT
,但我不知道我的方法是否合适。
您只需将结构转换为 table:
SELECT ACCOUNTPK, ACCOUNTCODE FROM table(MVT_TAB)