将现有数据迁移到VARRAY类型

时间:2013-10-30 19:23:39

标签: sql oracle11g

我的数据库架构中定义了以下VARRAY类型:

create or replace type STRING_VECTOR is varray(10) of varchar2(50);

我还有以下员工数据库表

first name| last name| salary
'John'    | 'Doe'    | 10.00

请注意,工资栏是NUMBER(38,14)。

我想要做的是添加第四列我的STRING_VECTOR类型。我想用每个记录的字符串值填充我的字符串向量,如下所示:

first name| last name| salary| data
'John'    | 'Doe'    | 10.00 | ['John', 'Doe', '10.00']

有人可以给我一些关于是否可以编写PL / SQL来实现这一点的指示吗?

1 个答案:

答案 0 :(得分:1)

这一点都不难看,看看:

CREATE TABLE my_emp_test (
  first_name VARCHAR2(20),
  last_name VARCHAR2(20),
  salary NUMBER(38, 14)
);

INSERT INTO my_emp_test VALUES ('John', 'Doe', 10.00);

COMMIT;

CREATE OR REPLACE TYPE string_vector IS VARRAY(10) OF VARCHAR2(50);

ALTER TABLE my_emp_test ADD data string_vector;

UPDATE my_emp_test
  SET data = string_vector(first_name, last_name, TO_CHAR(salary))
;

COMMIT;

SELECT * FROM my_emp_test;
FIRST_NAME           LAST_NAME                SALARY DATA                               
-------------------- -------------------- ---------- ------------------------------------
John                 Doe                          10 HR.STRING_VECTOR('John','Doe','10') 

你写道你想要PL / SQL,但是你可以在纯SQL中完成它,这对你有用吗?