DECLARE
CURSOR c1 IS
SELECT owner,synonym_name name
FROM dba_synonyms
WHERE table_owner='SYSMAN';
BEGIN
FOR r1 IN c1 LOOP
IF r1.owner='PUBLIC' THEN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM'||r1.name;
ELSE
EXECUTE IMMEDIATE 'DROP SYNONYM'||'.'||r1.name;
END IF;
END LOOP;
END;
Обстрагируясь от правильности подхода, пробел в выражении:
SYNONYM '||
явно необходим, а зачем кстати:
SYNONYM'||'.'||
? Точка с контактенацией и пробел опять же желателен.