0

我试图在一个 sql 文件中运行一些语句,但它不起作用。

declare 
  new_sequence INTEGER;
begin 
  select LAST_NUMBER + 1 
    into new_sequence 
    from user_sequences 
   where SEQUENCE_NAME = 'MLTS_SEQUENCE';

  execute immediate 'Create sequence Table_SEQ start with '
      || new_sequence ||' increment by 1';
end;

如果我在 Eclipse 数据库插件中使用“作为一个语句执行”选项运行这个块,它就可以工作。

我如何标记 sqlscript 以将这些块中的每一个作为一个语句运行,以便稍后使用 sqlplus 或与 eclipse 不同的东西执行脚本?

我在前面和/最后尝试了 GO,但这也没有用。

4

2 回答 2

1

只要它在自己的行上并且左对齐,在 sql*plus 中应该没问题:

SQL> create sequence MLTS_SEQUENCE start with 1 cache 20;

Sequence created.

SQL> select MLTS_SEQUENCE.nextval from dual;

   NEXTVAL
----------
         1

SQL> declare
  2    new_sequence INTEGER;
  3  begin
  4    select LAST_NUMBER + 1
  5      into new_sequence
  6      from user_sequences
  7     where SEQUENCE_NAME = 'MLTS_SEQUENCE';
  8
  9    execute immediate 'Create sequence Table_SEQ start with '
 10        || new_sequence ||' increment by 1';
 11  end;
 12  /

PL/SQL procedure successfully completed.

SQL> select Table_SEQ.nextval from dual;

   NEXTVAL
----------
        22
于 2013-03-08T15:16:21.217 回答
1

sqlplus 的正确格式如下:

declare
  ...
begin
  ...
end;
/
于 2013-03-08T15:20:25.510 回答