首页 > 解决方案 > 他不执行该程序。第一步失败。甲骨文

问题描述

我在 oracle 中创建了删除我的表并从我的视图中创建同一个表的过程。但是我在运行这个程序时遇到了一些问题。删除表的第一步有效,但复制它不起作用。

这是一个很好的程序吗?

create or replace PROCEDURE transfer_table (table_name IN VARCHAR2,tableFrom IN VARCHAR2) IS
BEGIN
    EXECUTE IMMEDIATE 'DROP TABLE ' || table_name;
    EXECUTE IMMEDIATE 'CREATE TABLE ' || table_name || ' AS SELECT * FROM ' || tableFrom;
  commit;
END transfer_table;

接下来,我单击此过程并更改变量,然后查看并单击确定,但只有删除表的第一步有效。我究竟做错了什么 ?

在此处输入图像描述

标签: sqlplsqlplsqldeveloper

解决方案


如果您创建的表不存在,我认为您需要捕获错误。

create or replace PROCEDURE transfer_table (table_name IN VARCHAR2,tableFrom IN VARCHAR2) IS
BEGIN
    BEGIN
        EXECUTE IMMEDIATE 'DROP TABLE ' || table_name;
    EXCEPTION WHEN OTHERS THEN
        NULL;
    END;

    EXECUTE IMMEDIATE 'CREATE TABLE ' || table_name || ' AS SELECT * FROM ' || tableFrom;
  commit;
END transfer_table;

推荐阅读