📅  最后修改于: 2023-12-03 14:45:31.771000             🧑  作者: Mango
在 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 从另一个表创建表的介绍,希望能对你有所帮助。