Plsql ORA-00933:SQL语句未结束

Plsql ORA-00933:SQL语句未结束,plsql,Plsql,没有看到任何明显的东西 声明 游标零件表是 选择表名称、分区名称、高值 从DBA_选项卡_分区 其中表_所有者位于('FDW'、'FDWSTG'、'FDW3NF') 按表名称、分区位置排序; 当前系统参考光标; r整数; 高值VARCHAR2(100); 开始 对于PartTables循环中的aTab 执行立即“开始:返回:=”|| aTab.HIGH|u值||”;结束;'使用高值; 如果highValue不在('DEFAULT'、'MAXVALUE')中,则 打开“从”| | aTab.TAB

没有看到任何明显的东西

声明
游标零件表是
选择表名称、分区名称、高值
从DBA_选项卡_分区
其中表_所有者位于('FDW'、'FDWSTG'、'FDW3NF')
按表名称、分区位置排序;
当前系统参考光标;
r整数;
高值VARCHAR2(100);
开始
对于PartTables循环中的aTab
执行立即“开始:返回:=”|| aTab.HIGH|u值||”;结束;'使用高值;
如果highValue不在('DEFAULT'、'MAXVALUE')中,则

打开“从”| | aTab.TABLE| | | |”分区(“| | aTab.PARTITION|u NAME | |”)中选择ROWNUM的cur,其中ROWNUM我无法访问您的数据库,但我可以猜测问题

我认为您的分区名
aTab.partition\u name
可能不是有效的SQL标识符。其中可能包含符号:

SQL>从rownum所在的某个表分区(某个部分名称)中选择rownum
Error at line 6
ORA-00933: SQL command not properly ended
ORA-06512: at line 16
DECLARE
 CURSOR PartTables IS
    SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE
    FROM DBA_TAB_PARTITIONS
    where TABLE_owner in ('FDW','FDWSTG','FDW3NF')
    ORDER BY TABLE_NAME, PARTITION_POSITION;

    cur SYS_REFCURSOR;
    r INTEGER;
    highValue VARCHAR2(100);

BEGIN
   FOR aTab IN PartTables LOOP
      EXECUTE IMMEDIATE 'BEGIN :ret := '||aTab.HIGH_VALUE||'; END;' USING OUT highValue;
      IF highValue NOT IN ('DEFAULT', 'MAXVALUE') THEN
         OPEN cur FOR 'SELECT ROWNUM FROM '||aTab.TABLE_NAME||' PARTITION ('||aTab.PARTITION_NAME||') WHERE ROWNUM <= 1';
         FETCH cur INTO r;
         IF cur%NOTFOUND THEN
         
            dbms_output.put_line ('Partition dropped');
    --        EXECUTE IMMEDIATE 'ALTER TABLE '||aTab.TABLE_NAME||' DROP PARTITION '||aTab.PARTITION_NAME||' UPDATE INDEXES';
         END IF;
         CLOSE cur;    
      END IF;
   END LOOP;
END;