Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle PL/SQL:Hilfe beim Auflösen von PLS-00103:Das Symbol LOOP ist aufgetreten, wenn eines der folgenden Dinge erwartet wurde:if

DECLARE
    update_count integer := 0;
    prjt_name varchar2(100) := 'tttt';
    mysql varchar2(100);
                   tablename  varchar2(100);

    cursor my_cur is 
         select 'DUAL' 
            from dual
           where 'PROJECT_ID' = 'PROJECT_ID' and 'SANDBOX' = 'SANDBOX';

begin
    open my_cur;
    LOOP
    FETCH  my_cur into tablename;
      EXIT WHEN my_cur%NOTFOUND;
        update_count := 0;
        mysql := 'select count(*)  ' || ' from '
        || tablename
        || ' where  ''TTTT'' = upper('''
        || prjt_name
        || ''')' ;
      Execute immediate mysql INTO update_count;
        dbms_output.put_line (mysql);

  dbms_output.put_line (update_count);
  END LOOP;
CLOSE my_cur;
end;

Ich habe einen wie deinen ausprobiert. Dies wird erfolgreich ausgeführt

declare
    query varchar2(10000);
    update_count integer := 0;
    prjt_name varchar2(100) := '01213264B';
    cursor my_cur is 
           select table_name 
             from [email protected]_pos15 
             where column_name = 'PROJECT_ID' and owner = 'SANDBOX';
    tableName  varchar2(100);
begin
  open my_cur;
    loop
    fetch my_cur into tableName;
    exit when my_cur%NOTFOUND;
        update_count := 0;
        query := 'select count(t.project_id) as ''CNT'' from sandbox.'
        || tableName
        || '@adhoc_pos15 t'
        || ' where  t.project_id = (select project_id from [email protected]_pos15 where project_name = ''' || prjt_name || ''') ' ;
   execute immediate query into update_count;
     dbms_output.put_line (query);
     dbms_output.put_line (update_count);
  end loop;
close my_cur;
end;