在一般的数据存取操作过程中,如果要对一个主表和对应的子表进行插入操作,那么我们最常见的写法就是写两个存储过程或者SQL语句,一个负责主表数据插入,一个负责子表数据插入,然后在一个事务中实现主表和子表数据的插入。

现在遇到一个问题是,能否在一个存储过程中实现主表和子表数据的插入呢?那么就需要将一对多的数据作为存储过程的参数传入。这种情况下就需要使用表类型。下面以一个学生和班级的例子来说明:

先建立一个班级表和一个学生表,一个班级里面有多个学生。


CREATE TABLE CLASS
(
   CLASSID     
NUMBER (38PRIMARY KEY,
   CLASSNAME   
VARCHAR2 (50 BYTE) NOT NULL
);

CREATE TABLE STUDENT
(
  STUID        
NUMBER(38PRIMARY KEY,
  CLASSID      
NUMBER(38)                       NOT NULL,
  STUNAME      NVARCHAR2(
50)                    NOT NULL,
  STUGENDER    
CHAR(1 BYTE),
  STUBIRTHDAY  DATE,
  DESCRIPTION  NVARCHAR2(
2000)
);

CREATE SEQUENCE CLASSID;

CREATE SEQUENCE STUDENTID;

相关文章: