-1

我正在尝试运行以下 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 语句

4

1 回答 1

2

您的值用双引号括起来,就 Oracle 而言,这使它们成为(列)标识符。你需要单引号:

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

SQL 小提琴

为此,您不需要 PL/SQL - 您可以使用带有 select-connect-by 的更简单的 insert-into - 但我不确定您是否将其作为练习。

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 小提琴

于 2013-08-02T23:31:57.837 回答