Plsql PLS-00103:遇到符号“;“循环”;当预期以下情况之一时:如果

Plsql PLS-00103:遇到符号“;“循环”;当预期以下情况之一时:如果,plsql,Plsql,我应该用大写印刷印度和以色列,用小写印刷所有其他国家 我得到以下错误: PLS-00103:在期望一个 以下:如果 如何索引此数组以按字母顺序显示国家/地区 DECLARE type idtable IS TABLE OF COUNTRIES.COUNTRY_ID%TYPE; type nametable IS TABLE OF COUNTRIES.COUNTRY_NAME%TYPE; idtab idtable; nametab nametable; total

我应该用大写印刷印度和以色列,用小写印刷所有其他国家

我得到以下错误:

PLS-00103:在期望一个 以下:如果

如何索引此数组以按字母顺序显示国家/地区

DECLARE
   type idtable IS TABLE OF COUNTRIES.COUNTRY_ID%TYPE;
   type nametable IS TABLE OF COUNTRIES.COUNTRY_NAME%TYPE;
   idtab idtable;
   nametab nametable;
   total INTEGER;

   CURSOR c1 IS
   SELECT country_id, country_name
   FROM countries; 

BEGIN
  OPEN c1;
  FETCH c1 BULK COLLECT INTO idtab, nametab;
  CLOSE c1;


  for i =1 in nametab.FIRST .. nametab.LAST LOOP
    IF (nametab(i)) = 'India' 
      THEN dbms_output.put_line(UPPER((nametab(i))));
      ELSIF (nametab(i)) = 'Israel'
      THEN dbms_output.put_line(UPPER((nametab(i))));
      ELSE DBMS_OUTPUT.PUT_LINE (nametab(i));
  END LOOP;

  END;  

你的方块是正确的,除了一个错误。与C或C++循环不同,在PLSQL中不需要初始化它。所以在for循环中i=1是错误的。删除“=1”,它应该可以正常工作。欢迎使用堆栈溢出!欢迎来到堆栈溢出!为了解决这个问题,你能在内容中有一个更好的标题和更详细的信息吗?
DECLARE
   TYPE idtable IS TABLE OF COUNTRIES.COUNTRY_ID%TYPE;

   TYPE nametable IS TABLE OF COUNTRIES.COUNTRY_NAME%TYPE;

   idtab     idtable;
   nametab   nametable;
   total     INTEGER;

   CURSOR c1
   IS
      SELECT country_id, country_name FROM countries;
BEGIN
   OPEN c1;

   FETCH c1 BULK COLLECT INTO idtab, nametab;

   CLOSE c1;

   FOR i IN nametab.FIRST .. nametab.LAST
   LOOP
      IF (nametab (i)) = 'India' THEN
         DBMS_OUTPUT.put_line (UPPER ( (nametab (i))));
      ELSIF (nametab (i)) = 'Israel' THEN
         DBMS_OUTPUT.put_line (UPPER ( (nametab (i))));
      ELSE
         DBMS_OUTPUT.PUT_LINE (nametab (i));
      END IF;
   END LOOP;
END;