📜  pl sql 从另一个表创建表 - SQL (1)

📅  最后修改于: 2023-12-03 14:45:31.771000             🧑  作者: Mango

PL/SQL从另一个表创建表

在 PL/SQL 中,我们可以通过 SELECT 语句从一个表中读取数据,然后使用 CREATE TABLE 语句创建一个新的表,并将数据插入到新表中。以下是一个简单的示例:

CREATE TABLE new_table AS
SELECT * FROM existing_table;

其中,existing_table 是已经存在的表名,new_table 是你要创建的新表名。使用该语句,你可以快速创建一个新表,而不必手动输入表结构信息。

如果想将部分字段从另一个表中复制到新表中,也可以在 SELECT 语句中指定需要的字段。例如:

CREATE TABLE new_table AS
SELECT column1, column2, column3 FROM existing_table;

在这个例子中,new_table 将只包含 existing_table 中的 column1、column2 和 column3 字段。

在实际使用中,你可能需要根据需要创建多个新表。一个更好的方法是编写一个存储过程来自动创建表。这个存储过程可以接受参数(例如,要创建的新表名和需要复制的字段),并使用动态 SQL 创建新表。以下是一个示例存储过程:

CREATE OR REPLACE PROCEDURE create_new_table (
    new_table_name IN VARCHAR2,
    existing_table_name IN VARCHAR2,
    columns_to_copy IN VARCHAR2
) IS
    sql_stmt VARCHAR2(4000) ;
BEGIN
    sql_stmt := 'CREATE TABLE ' || new_table_name || ' AS SELECT ' || columns_to_copy || ' FROM ' || existing_table_name;
    EXECUTE IMMEDIATE sql_stmt;
END create_new_table;

使用该存储过程,可以按以下方式调用:

BEGIN
    create_new_table('new_table', 'existing_table', 'column1, column2, column3');
END;

以上是关于 PL/SQL 从另一个表创建表的介绍,希望能对你有所帮助。