SET serveroutput ON;
DECLARE
TYPE enreg IS RECORD
(mot varchar(30),sig varchar(30));
TYPE tab IS TABLE OF enreg;
t tab := tab({'html','html'},{'css','css'});
BEGIN
dbms_output.put_line(t(1).mot) ;
END;
答案 0 :(得分:1)
您无法初始化RECORDS,它们会自动初始化。您可以设置值,例如:
DECLARE
TYPE enreg IS RECORD (mot VARCHAR(30),sig VARCHAR(30));
en1 enreg;
en2 enreg;
TYPE TAB IS TABLE OF enreg;
t TAB;
BEGIN
en1.mot := 'html';
en1.sig := 'html';
en2.mot := 'css';
en2.sig := 'css';
t := TAB(en1, en2);
DBMS_OUTPUT.PUT_LINE( t(1).mot) ;
SELECT 'html', 'html'
INTO en1
FROM dual;
SELECT 'css', 'css'
INTO en2
FROM dual;
t := TAB(en1, en2);
DBMS_OUTPUT.PUT_LINE( t(1).mot) ;
END;
答案 1 :(得分:0)
我在声明部分初始化它,而不是像
这样的开头t(1).mot:='html', t(1).sig:='html'
!!
如果你有一个可以填充记录的函数,你可以在块的DECLARE
部分进行:
SET ServerOutPut ON;
DECLARE
TYPE enreg IS RECORD (mot varchar(30),sig varchar(30));
TYPE tab IS TABLE OF enreg;
FUNCTION createEnreg( mot VARCHAR2, sig VARCHAR2 ) RETURN enreg;
t TAB := TAB( createEnreg('html','html'), createEnreg('css','css') );
FUNCTION createEnreg( mot VARCHAR2, sig VARCHAR2 ) RETURN enreg
IS
e enreg;
BEGIN
e.mot := mot;
e.sig := sig;
RETURN e;
END;
BEGIN
Dbms_output.put_line(t(1).mot) ;
END;
/