将表中的数据存储到对象表中

时间:2015-11-17 05:23:31

标签: sql database oracle plsql object-oriented-database

您如何将数据传输到对象表?

假设你有一张桌子:

create table thisTable(
    column1 varchar2(20),
    column2 varchar2(20),
    column3 varchar2(20)
)
/

你有一个新的对象表:

create table oo_thisTable(
    object1 object1_t
)
/
create type object1_t as object (
    column1 varchar2(20),
    column2 varchar2(20),
    column3 varchar2(20)
)
/

如何将数据从thisTable传输到oo_thisTable?

declare
    cursor c1 is
        select * from thisTable;
begin
    open c1;
    loop
        fetch c1 into column1, column2, column3;
        exit when c1%notfound;
        ...

3 个答案:

答案 0 :(得分:3)

无需使用 PL / SQL ,您可以在纯 SQL 中执行此操作。

INSERT INTO oo_thistable SELECT object1_t(column1, column2, column3) FROM thistable;

<强>演示

创建所需的类型表格

SQL> create table thisTable(
  2      column1 varchar2(20),
  3      column2 varchar2(20),
  4      column3 varchar2(20)
  5  )
  6  /

Table created.

SQL> create type object1_t as object (
  2      column1 varchar2(20),
  3      column2 varchar2(20),
  4      column3 varchar2(20)
  5  )
  6  /

Type created.

SQL> create table oo_thisTable(
  2      object1 object1_t
  3  )
  4  /

Table created.

thistable中插入几行:

SQL> INSERT INTO thistable VALUES('a','b','c');

1 row created.

SQL> INSERT INTO thistable VALUES('d','e','f');

1 row created.

SQL> INSERT INTO thistable VALUES('g','h','i');

1 row created.

现在我们要插入 thistable中的所有行到oo_thistable

SQL> INSERT INTO oo_thistable SELECT object1_t(column1, column2, column3) FROM thistable;

3 rows created.

<强>验证

SQL> SELECT * FROM oo_thistable;

OBJECT1(COLUMN1, COLUMN2, COLUMN3)
--------------------------------------------------------------------------------
OBJECT1_T('a', 'b', 'c')
OBJECT1_T('d', 'e', 'f')
OBJECT1_T('g', 'h', 'i')

您已插入所有行。

答案 1 :(得分:2)

INSERT INTO oo_thisTable (object1) SELECT object1_t(column1, column2, column3) FROM thisTable;

为了更好的可读性,您可以使用关键字NEW明确显示您调用类型构造函数而不仅仅是某些函数。

INSERT INTO oo_thisTable (object1) SELECT new object1_t(column1, column2, column3) FROM thisTable;

答案 2 :(得分:2)

我已经针对所描述的问题编写了一些顺序步骤。请尝试这个,如果有帮助请告诉我。

math.log(2.0)