使用用户提供的表名在plsql中创建表

时间:2018-06-29 12:46:47

标签: oracle plsql

要求:- 创建表“ new_table”,并从“ existing_table”中选择*;

我想在oracle过程中实现上述查询,我​​也想使该过程接受用户输入的“ new_table”和“ existing_table”。

基本上,我不想在过程主体内对create table语句进行硬编码。

请向我建议以上情况的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

您的过程将如下所示。

CREATE OR REPLACE PROCEDURE create_table (
    p_tab_name VARCHAR2,
    p_existing_tab VARCHAR2
)
    AS
BEGIN
    EXECUTE IMMEDIATE 'CREATE TABLE '
                      || p_tab_name
                      || ' AS SELECT * FROM '
                      || p_existing_tab;
END;
/

然后您可以调用以下过程以获取用户输入:

BEGIN
   create_table('&tab_name','&existing');
END;
/