我想在qazxsw poi函数中初始化qazxsw poi table的列的值。
下面是代码。这个问题可以被视为MY_PERSON_TABLE
的延伸
我面临的问题是,我无法编译代码并为FNAME,ID分配一些值。
FN_INITIALIZE
你有几个错误:
create table MY_PERSON_TABLE
(
ID NUMBER(20),
FNAME VARCHAR2(30)
);
CREATE SYNONYM SYNONYM_PERSONAL FOR MY_PERSON_TABLE;
CREATE OR REPLACE PACKAGE TEST IS
TYPE TY_PERSONAL IS TABLE OF SYNONYM_PERSONAL%ROWTYPE INDEX BY BINARY_INTEGER;
TYPE TY_PERSON IS RECORD(
PERSONAL TY_PERSONAL
);
END TEST;
CREATE OR REPLACE PACKAGE TEST_BODY IS
FUNCTION FN_INITIALIZE(P_ACTION IN VARCHAR2) RETURN BOOLEAN IS
L_TO_INITIALIZE TY_PERSON;
BEGIN
L_TO_INITIALIZE.PERSONAL := NEW SYNONYM_PERSONAL();
--The above code throws "PLS-00222: no function with name .. exists in the scope"
--How to initialiaze the value of FNAME & ID of MY_PERSON_TABLE?
END FN_INITIALIZE;
END TEST_BODY;
BEGIN
(和CREATE OR REPLACE PACKAGE TEST_BODY
也应该是CREATE OR REPLACE PACKAGE BODY TEST
)。END TEST_BODY
的字段自动创建的。这是您需要初始化的对象。END TEST
没有意义,因为NULL
是表的同义词,而不是记录。相反,你只想选择任何索引值(例如L_TO_INITIALIZE.PERSONAL := NEW SYNONYM_PERSONAL();
),只需设置记录的字段值,而无需初始化它。像这样:
SYNONYM_PERSONAL
23
但是,你应该问自己: