2014-11-12 20 views
0

У меня есть этот код:Создать каталог внутри хранимой процедуры PLSQL

create or replace PROCEDURE insert_dir(id number, filename varchar2, dir varchar2) 
IS 
    sqlQ varchar2; 
BEGIN 
    sqlQ := 'create directory DIR0001 as '||dir; 
    EXECUTE IMMEDIATE (sqlQ); 
END; 

Я пытаюсь создать каталог внутри хранимой процедуры и передать значение по параметру, но я получаю сообщение об ошибке:

Package or function INSERT_DIR is in an invalid state 
06575. 00000 - "Package or function %s is in an invalid state" 
*Cause: A SQL statement references a PL/SQL function that is in an 
      invalid state. Oracle attempted to compile the function, but 
      detected errors. 
*Action: Check the SQL statement and the PL/SQL function for syntax 
      errors or incorrectly assigned, or missing, privileges for a 
      referenced object. 

процедура звонка:

CALL insert_dir(3,'pic.jpg','C:\Users\User\Desktop\media'); 

Кто-нибудь знает, что я делаю неправильно?

ответ

1

После компиляции процедуры он должен указать «Процедура, созданная с ошибками компиляции».

Если вы укажете SHOW ERRORS, он сказал бы вам ошибку компиляции и какую строку.

В этом случае ошибка в этой строке - декларация требует размера для VARCHAR2 и т.д .:

sqlQ varchar2(4000);