Oracle错误:ORA-06550:第12行,第4列

时间:2017-08-01 07:25:54

标签: sql oracle plsql

Oracle在执行表的重新定义时给出了以下错误。

此代码适用于其他表中的其他重新定义。

SQL> BEGIN
      2  
      3  -- **************************************************************
      4  -- Start the Redefinition Process
      5  -- **************************************************************
      6  BEGIN
      7  DBMS_REDEFINITION.start_redef_table(
      8  uname      => 'User',
      9  orig_table => 'SAN_RELAC_PERSONA',
     10  int_table      => 'NEW_SAN_RELAC_PERSONA',
     11  options_flag => DBMS_REDEFINITION.CONS_USE_ROWID);
     12  END;
     13  /
END;
   *
ERROR at line 12:
ORA-06550: line 12, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the
following:
( begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge

3 个答案:

答案 0 :(得分:0)

删除第13行/

BEGIN

   -- **************************************************************
   -- Start the Redefinition Process
   -- **************************************************************
   BEGIN
   DBMS_REDEFINITION.start_redef_table(
   uname      => 'User',
   orig_table => 'SAN_RELAC_PERSONA',
   int_table      => 'NEW_SAN_RELAC_PERSONA',
   options_flag => DBMS_REDEFINITION.CONS_USE_ROWID);
   END;
END;

答案 1 :(得分:0)

您的斜杠(/)符号位于错误的位置 - 它应该结束脚本,因此您应该将其放在最后一个END关键字之后。我希望它有所帮助。

BEGIN
        -- **************************************************************
        -- Start the Redefinition Process
        -- **************************************************************
       BEGIN
       DBMS_REDEFINITION.start_redef_table(
       uname      => 'User',
       orig_table => 'SAN_RELAC_PERSONA',
       int_table      => 'NEW_SAN_RELAC_PERSONA',
       options_flag => DBMS_REDEFINITION.CONS_USE_ROWID);
       END;
END;
/

答案 2 :(得分:0)

您有BEGIN BEGIN但不是END; END;

您可以像其他人建议的那样添加第二个END,否则会丢失BEGIN

begin
    dbms_redefinition.start_redef_table
    ( uname        => 'User'
    , orig_table   => 'SAN_RELAC_PERSONA'
    , int_table    => 'NEW_SAN_RELAC_PERSONA'
    , options_flag => dbms_redefinition.cons_use_rowid );
end;
/