【问题标题】:He does not perform the procedure. Fail in first step. Oracle他不执行该程序。第一步失败。甲骨文
【发布时间】:2019-08-02 11:43:22
【问题描述】:

我在 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;

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

【问题讨论】:

  • 否,但没有创建表:/ 可能是凭证问题。
  • 可能是一个简单的错字?名为 AUTOMAT_CENY_ODTW 的表或视图真的存在吗? (顺便说一下,提交和回滚对 CREATE 和 DROP 等 DDL 命令没有影响。)
  • 查看物化视图。

标签: sql plsql plsqldeveloper


【解决方案1】:

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2022-01-24
    • 2011-05-13
    • 2012-07-27
    • 2012-01-28
    相关资源
    最近更新 更多