假设我有一个名为test_1
的表。该表的名为contact
的一列(其数据类型为contact_data
和contact_data
的一列名为personalarray
的列为personal
的varray(另一数据类型)。我的问题是:如何向名为personale
的varray添加元素?
create or replace type personal as OBJECT(
name varchar2(30),
last_name varchar2(30),
charge varchar2(50),
mail varchar2(100)
);
create or replace type personalarray as varray(3) of personal;
create or replace type contact_data as OBJECT(
mail varchar2(40),
fax varchar2(20),
personale personalarray
);
create table test_1(
id int,
contact contact_data
);
/
我第一次知道如何插入,但是如何向该varray添加元素?这是我第一次在该列中插入的方法:
update test_1 set contact = contact_data('mail','+5622',personalarray(personal('Ju','Cuneo','president','anothermail')))
答案 0 :(得分:1)
Oracle设置:
AppCompatActivity
您可以创建一个函数来更新值:
$(document).ready( function() {
$('#auto').load("static/l.txt");
refresh();
});
function refresh() {
setTimeout(function() {
$('#auto').load("static/l.txt");
refresh();
}, 1000);
}
更新:
create or replace type personal as OBJECT(
name varchar2(30),
last_name varchar2(30),
charge varchar2(50),
mail varchar2(100)
);
/
create or replace type personalarray as varray(3) of personal;
/
create or replace type contact_data as OBJECT(
mail varchar2(40),
fax varchar2(20),
personale personalarray
);
/
create table test_1(
id int,
contact contact_data
);
/
INSERT INTO test_1 (
id,
contact
) VALUES (
1,
contact_data(
'mail',
'fax',
personalarray(
personal( 'name1', 'lastname1', 'charge1', 'mail1' )
)
)
);
查询:
CREATE FUNCTION updateContactDataPersonal(
in_contact IN test_1.contact%type,
in_index IN number,
in_personal IN personal
) RETURN contact_data
IS
p_contact contact_data := in_contact;
BEGIN
IF ( p_contact IS NULL ) THEN
p_contact := contact_data( NULL, NULL, personalarray() );
END IF;
IF ( p_contact.personale IS NULL ) THEN
p_contact.personale := personalarray();
END IF;
IF ( in_index < 1 OR in_index > 3 ) THEN
raise_application_error( -20001, 'Invalid index' );
END IF;
IF ( p_contact.personale.COUNT < in_index ) THEN
p_contact.personale.extend( in_index - p_contact.personale.COUNT );
END IF;
p_contact.personale( in_index ) := in_personal;
RETURN p_contact;
END;
/
输出:
UPDATE test_1
SET contact = updateContactDataPersonal( contact, 3, personal( 'name3', 'lastname3', 'charge3', 'mail3' ) )
WHERE id = 1;