Oracle 11g
我很难为我创建的表的记录确定正确的构造函数。我一直得到一个ORA-06550/偏最小二乘-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我不知道这里有什么问题,更广泛地说,我想知道如何为我试图创建的任何记录确定正确的构造函数。
发布于 2013-07-30 22:10:37
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;
/SQL Fiddle。
发布于 2013-07-30 22:15:54
试试这个:
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;
/https://stackoverflow.com/questions/17957670
复制相似问题