问题描述
大家好
我正在尝试基于对象类型创建表类型,但是当我尝试填充它时,出现错误。我从几个地方复制了语法,但似乎我做错了什么。
这是代码
但是每当我尝试放置任何值时,它只是返回错误消息。“错误的参数数量或类型”
有人能给我指出正确的方向吗?网上的样品不多。
提前谢谢。
我正在尝试基于对象类型创建表类型,但是当我尝试填充它时,出现错误。我从几个地方复制了语法,但似乎我做错了什么。
这是代码
CREATE OR REPLACE TYPE T1_OBJ AS OBJECT
(field1 VARCHAR2(10),
field2 INTEGER);
CREATE OR REPLACE TYPE T1_TAB AS TABLE OF T1_OBJ;
DECLARE
v_t1 T1_TAB;
BEGIN
v_t1 := T1_TAB('Hernan',NULL);
END;
now, for some reason, if i put all null values, it works
DECLARE
v_t1 T1_TAB;
BEGIN
v_t1 := T1_TAB(NULL,NULL);
END;
但是每当我尝试放置任何值时,它只是返回错误消息。“错误的参数数量或类型”
有人能给我指出正确的方向吗?网上的样品不多。
提前谢谢。
专家解答
我们经常创建一个对象表,然后把它想象成一个 “类似Excel” 的结构,即,我有一个 'n' 行,每一行都有 'p' 列,其中 'p' 是对象中的属性数量。
但事实并非如此。它真的是一个数组 * 的对象 *。
因此,如果我们要填充该数组,则其中的元素必须是 * 对象 *。
但事实并非如此。它真的是一个数组 * 的对象 *。
因此,如果我们要填充该数组,则其中的元素必须是 * 对象 *。
SQL> CREATE OR REPLACE TYPE T1_OBJ AS OBJECT
2 (field1 VARCHAR2(10),
3 field2 INTEGER);
4 /
Type created.
SQL>
SQL> CREATE OR REPLACE TYPE T1_TAB AS TABLE OF T1_OBJ;
2 /
Type created.
SQL>
SQL> DECLARE
2 v_t1 T1_TAB;
3 BEGIN
4 v_t1 := T1_TAB('Hernan',NULL);
5 END;
6 /
v_t1 := T1_TAB('Hernan',NULL);
*
ERROR at line 4:
ORA-06550: line 4, column 11:
PLS-00306: wrong number or types of arguments in call to 'T1_TAB'
ORA-06550: line 4, column 3:
PL/SQL: Statement ignored
SQL>
SQL>
SQL> DECLARE
2 v_t1 T1_TAB;
3 BEGIN
4 v_t1 := T1_TAB(T1_OBJ('Hernan',NULL));
5 END;
6 /
PL/SQL procedure successfully completed.
SQL> DECLARE
2 v_t1 T1_TAB;
3 BEGIN
4 v_t1 := T1_TAB(
5 T1_OBJ('Hernan',NULL),
6 T1_OBJ('Connor',5),
7 T1_OBJ('Mike',10),
8 T1_OBJ('Susie',NULL)
9 );
10 END;
11 /
PL/SQL procedure successfully completed.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




