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;