目前我正在使用oracle 11g中的类型对象。在这方面,我有DB对象如下:如何在类型对象上创建索引?
表
CREATE TABLE students (rollno NUMBER(15) primary key, s_Name VARCHAR2(20), Marks type_1 );
类型对象规范是
CREATE OR REPLACE type type_1 AS object ( sub_1 NUMBER, sub_2 NUMBER, sub_3 NUMBER, member FUNCTION total RETURN NUMBER, member FUNCTION e_result RETURN VARCHAR2);
它的机身
CREATE OR REPLACE type body type_1 AS member FUNCTION total RETURN NUMBER IS BEGIN RETURN (sub_1+sub_2+sub_3); END; member FUNCTION e_result RETURN VARCHAR2 IS DECLARE temp NUMBER; BEGIN temp :=sub_1+sub_2+sub_3; IF(temp>50) THEN RETURN ('pass'); ELSE RETURN ('fail'); END IF; END; END;
创建毕竟这些事情,甚至我已经成功地使用填充
BEGIN
FOR i IN 1..800 LOOP
FOR j IN 1..400 LOOP
INSERT INTO students
VALUES (sequence1.NEXTVAL,
dbms_random.String('A', 5),
Type_1(Round(dbms_random.Value(10, 100)), Round(
dbms_random.Value(10, 100)), Round(dbms_random.Value(10, 100))));
END LOOP;
END LOOP;
dbms_output.Put_line('completed');
COMMIT;
END;
/
我需要在tot
列上e_result
列和普通索引创建位图索引的学生表。
我已经试过
create index id1 on students(marks.total)
和
create bitmap index bid1 on students(marks.e-result)
但我不能。我应该做些什么?
只是好奇你为什么要创建一个对象的嵌套表rathe而不是简单地创建一个MARKS表并根据需要加入学生?但是,也许这只是pl/sql的练习? – tbone 2013-03-04 12:08:30
@ tbone:你正好...这只是与类型的对象伙计的做法! – 2013-03-04 12:48:53