Oracle 11g
我无法为我创建的表的记录确定正确的构造函数。我一直为每个参数得到一个ORA-06550 / PLS-00306错误组合。
例如,示例表定义为:
CREATE TABLE TMP_EXAMPLE_TABLE
(
ID NUMBER(8) NOT NULL PRIMARY KEY,
FK_ID NUMBER(8) NOT NULL,
SOME_DATA NUMBER(8)
)
TABLESPACE MyTablespace;
我尝试按如下方式实例化记录:
DECLARE
TYPE example_rec_tab IS TABLE OF TMP_EXAMPLE_TABLE%ROWTYPE;
example_recs example_rec_tab;
BEGIN
example_recs.EXTEND;
example_recs(example_recs.COUNT) := example_rec_tab(1, 2, 3);
END;
但是我得到了
ORA-06550: line 6, column 41:
PLS-00306: wrong number or types of arguments in call to 'EXAMPLE_REC_TAB'
ORA-06550: line 6, column 41:
PLS-00306: wrong number or types of arguments in call to 'EXAMPLE_REC_TAB'
ORA-06550: line 6, column 41:
PLS-00306: wrong number or types of arguments in call to 'EXAMPLE_REC_TAB'
ORA-06550: line 6, column 5:
PL/SQL: Statement ignored
我没有看到这里有什么问题,更一般地说,我想知道如何为我想要创建的任何记录确定正确的构造函数。
答案 0 :(得分:2)
试试这个:
DECLARE
SUBTYPE my_row_type IS TMP_EXAMPLE_TABLE%ROWTYPE;
TYPE example_rec_tab IS TABLE OF my_row_type;
example_recs example_rec_tab;
my_row my_row_type;
BEGIN
example_recs := example_rec_tab();
example_recs.EXTEND;
SELECT 1 , 2 , 3 INTO my_row FROM dual;
example_recs(example_recs.COUNT) := my_row ;
END;
/
答案 1 :(得分:1)
example_rec_tab(1, 2, 3)
正在尝试创建表,而不是单个记录。您需要填充记录的各个字段;并且您需要在开始之前实例化该表:
DECLARE
TYPE example_rec_tab IS TABLE OF TMP_EXAMPLE_TABLE%ROWTYPE;
example_recs example_rec_tab;
BEGIN
example_recs := example_rec_tab();
example_recs.EXTEND;
example_recs(example_recs.COUNT).id := 1;
example_recs(example_recs.COUNT).id := 2;
example_recs(example_recs.COUNT).id := 3;
END;
/