2016-12-06 6 views
0

Примечание: У меня нет этой проблемы при использовании Oracle SQL Developer :: - Но это не стандарт здесь. Так что я должен найти способ сделать это в PL/SQL DeveloperPLS-00103 Ошибка в PL/SQL Developer

При попытке использовать PL/разработчик SQL (PL/SQL Developer - программа), чтобы динамически удалять таблицы затем создать новые с помощью создать заявление, которое я последовательно запустить в ошибку:
PLS-00103: ВОЗНИКНУВШИЙ символ «/» символ «/» игнорировался PLSQL

Это связанно с «/» в конце динамического SQL.

Если я удалить «/» с конца я получаю сообщение об ошибке: ВОЗНИКШИЕ СИМВОЛ «СОЗДАТЬ»

Что является лучшим способом, чтобы обойти эту ошибку внутри PL/SQL Developer?

Спасибо:

DECLARE 
     VE_TABLENOTEXISTS EXCEPTION; 
PRAGMA EXCEPTION_INIT(VE_TABLENOTEXISTS, -942); 


    PROCEDURE DROPTABLE(PIS_TABLENAME IN VARCHAR2) IS 
       VS_DYNAMICDROPTABLESQL VARCHAR2(1024); 
        BEGIN 
         VS_DYNAMICDROPTABLESQL := 'DROP TABLE ' || PIS_TABLENAME; 
        EXECUTE IMMEDIATE VS_DYNAMICDROPTABLESQL; 

        EXCEPTION 
         WHEN VE_TABLENOTEXISTS THEN 
          DBMS_OUTPUT.PUT_LINE(PIS_TABLENAME || ' NOT EXIST, SKIPPING....'); 
         WHEN OTHERS THEN 
          DBMS_OUTPUT.PUT_LINE(SQLERRM); 
        RAISE; 
        END DROPTABLE; 

    BEGIN 
     DROPTABLE('foo.foo_table'); 
END DROPTABLE; 
/

CREATE TABLE foo.foo_table AS 
(
SELECT STUFF, MORE_STUFF FROM not_foo_table 
) 
; 

SELECT * FROM foo.foo_table 
; 

ответ

1

Я слишком PLSQL Developer. Я пытаюсь скомпилировать вашу процедуру так, как вы ее публикуете, и я получаю ту же ошибку, но если я удалю пробелы перед «/», это будет хорошо; например, он не распознает «/».

Таким образом, я рекомендую вам изменить:

END DROPTABLE; 
/

Для этого:

END DROPTABLE; 
/
+0

Хахаха! Пространства! У меня никогда не было пробелов в SQl. Потому что это проблемы с музыкой раньше. – BGDev