2013-04-29 84 views
0

错误在命令开始位于第1行:语法错误在for循环

DECLARE 
    x NUMBER := 0; 
    counter NUMBER := 0; 
BEGIN 
    FOR i IN 1..4 LOOP 
     x := x + 1000; 
     counter := counter + 1; 
     INSERT INTO temp VALUES (x, counter, 'in OUTER loop'); 
     END; 
    END LOOP; 
    COMMIT; 
END; 

错误报告:

ORA-06550: line 11, column 10: 
PLS-00103: Encountered the symbol ";" when expecting one of the following: 

loop 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 
+0

你有'END','END LOOP','END'嵌套corect? – 2013-04-29 09:25:53

回答

2

第11行的第一END;不应该存在:

DECLARE 
    x NUMBER := 0; 
    counter NUMBER := 0; 
BEGIN 
    FOR i IN 1..4 LOOP 
     x := x + 1000; 
     counter := counter + 1; 
     INSERT INTO temp VALUES (x, counter, 'in OUTER loop'); 
    END LOOP; 
    COMMIT; 
END; 

你会o如果你有一个围绕INSERT(比如说)的子块,那么很少需要它,例如用于特定的异常处理。

这也将是较好的一般在INSERT指定列名:

 INSERT INTO temp(col1, col2, col3) VALUES (x, counter, 'in OUTER loop'); 
4

你不需要PL/SQL此插入模式。以下工作在纯SQL中:

create table temp(x number, counter number, text varchar2(20)); 

insert into temp 
select (rownum-1)*1000, rownum-1, 'in OUTER loop' 
from dual 
connect by level <=4;