循环用于在plsql中插入值范围

时间:2013-08-02 23:27:23

标签: oracle plsql oracle-apex

我正在尝试运行以下sql查询来填充表,但我无法运行它...任何想法?

BEGIN
FOR n in 21500..21600 LOOP

   if mod(n,2)=0
   then    
       dbms_output.put_line(n||'even');
   else
      insert into port_mapping(APP,VERSION,BUSINESS,CRITICAL,SUPPORTED,TYPE,PORT,NOTE)
      values("SDS","1","No","Yes","Yes","Server",n,"NA");
   end if;
END LOOP;
COMMIT;
END;

我收到错误

  

PL / SQL:ORA-00984:此处不允许列ORA-06550:第8行,列   7:PL / SQL:忽略SQL语句

1 个答案:

答案 0 :(得分:2)

您的值是双引号,这使得它们(列)标识符与Oracle有关。你需要单引号:

...
  values('SDS','1','No','Yes','Yes','Server',n,'NA');
...

SQL Fiddle

你不需要PL / SQL - 你可以使用一个更简单的插入 - 使用select-connect-by - 但我不确定你是否这样做是为了练习。

insert into port_mapping (APP,VERSION,BUSINESS,CRITICAL,SUPPORTED,TYPE,
    PORT,NOTE)
select 'SDS','1','No','Yes','Yes','Server',
    21500 + (level * 2) - 1,'NA'
from dual
connect by level < 51;

SQL Fiddle