Sql 如何创建集合并在包含该集合的表中插入值?

Sql 如何创建集合并在包含该集合的表中插入值?,sql,oracle,plsql,user-defined-types,Sql,Oracle,Plsql,User Defined Types,嘿,我正在创建一个数据库来存储有关体育俱乐部的一些信息,在那里我有教练和运动员,但当我尝试将教练(教练)插入表中时,会出现错误: 我的代码是这样的: 创建继承教练和运动员类型的人员类型(t_persona)。我们必须创建一个返回所有数据的函数 创建或替换类型t_persona作为对象( nom VARCHAR2(20), cognom VARCHAR2(20), dataNaix日期, 成员程序mostrar )不是最终的; / 创建或替换类型body t_persona AS 成员程序莫斯特

嘿,我正在创建一个数据库来存储有关体育俱乐部的一些信息,在那里我有教练和运动员,但当我尝试将教练(教练)插入表中时,会出现错误:

我的代码是这样的:

  • 创建继承教练和运动员类型的人员类型(t_persona)。我们必须创建一个返回所有数据的函数
  • 创建或替换类型t_persona作为对象(
    nom VARCHAR2(20),
    cognom VARCHAR2(20),
    dataNaix日期,
    成员程序mostrar
    )不是最终的;
    /
    创建或替换类型body t_persona AS
    成员程序莫斯特拉尔是
    开始
    dbms|u output.put|u line('Nom:'| Nom | Cognom:'| Cognom | DataNaix:'| | DataNaix);
    结束;
    结束;
    /

    2.创建游标类型(t_curs)

    创建或替换类型t\u curs作为对象(
    nom VARCHAR2(50),
    霍尔斯数(10),
    lloc VARCHAR2(50),
    日期
    );

    3.创建t_curs类型的课程集合(t_curos)

    创建或替换类型t_curos作为t_curs的varray(20)

    4.coach类型(t_entrandor)的创建必须从t_persona类型继承。这必须有一个返回所有数据的函数,重用t_persona函数

    CREATE OR REPLACE type t_entrenador under t_persona(
       telefon VARCHAR2(9),
       cursos t_cursos,
    OVERRIDING MEMBER PROCEDURE mostrar);
    /
    
    CREATE OR REPLACE type body t_entrenador as
    OVERRIDING MEMBER PROCEDURE  mostrar is
     BEGIN
       (self as t_persona).mostrar;
        dbms_output.put_line('Telefon: ' || telefon || 'Cursos : ' || cursos);
      END;
    END;
    
    5.创建包含入口的表入口

    CREATE TABLE entrenadors of t_entrenador
    
  • 在表格entrenadors中插入两个entrena
  • 将“Daniel”、“Rovira”、“to_date”(2014年1月12日)、“DD/MM/yyyyy”)、“65555222”、t_cursos(“Sping”、1、“España”、to_date(2014年1月12日)、“DD/MM/yyyyy”))插入到转口商价值中


    如果数字6是错误发生的地方,有人能帮我找出哪里出了问题吗?谢谢大家!

    t_entrenador.cursos
    的数据类型为
    t_cursos
    ,这是一个
    t_curs
    的表。要实例化表,需要传递
    t\u curs
    实例

    INSERT INTO entrenadors 
    VALUES('Daniel', 'Rovira', to_date('12/01/2014','DD/MM/YYYY'), '65555222',
            t_cursos(t_curs('spinning', 1, 'España', to_date('12/01/2014','DD/MM/YYYY'))
       )
      );
    

    您的
    t\u entrenador
    类型正文将不会编译。此处对
    cursos
    的引用无效:
    dbms_output.put_line('Telefon:'| | Telefon | | |'cursos:'| | cursos))。它是一个表,DBMS_输出无法呈现它。您需要引用表的一个属性,比如
    cursos.count()
    。我知道我会解决这个问题的!非常感谢。