【问题标题】:Migrate Existing Data Into VARRAY Types将现有数据迁移到 VARRAY 类型
【发布时间】:2013-10-30 19:23:39
【问题描述】:

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

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

我也有以下 Employee 数据库表

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

注意,salary 列是 NUMBER(38,14)。

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

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

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

【问题讨论】:

    标签: sql oracle11g


    【解决方案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 工资数据
    -------------------- -------- ---------- ----------------------------------
    约翰·多伊 10 HR.STRING_VECTOR('John','Doe','10') 

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

    【讨论】:

    • 太棒了!乍一看,它看起来很有希望。我会试一试。我没有意识到我可以在更新语句中内联向量创建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多