2010-10-26 2 views
1

Я создал пакет и тело пакета, как показано ниже:Oracle пакет Ошибка создания

Create or replace Package pkg_1 
as 
procedure main(param1 varchar2, param2 varchar2, param3 int); 
procedure one(param1 varchar2, param2 varchar2); 
procedure two(param1 varchar2, param2 varchar2); 
end pkg_1; 
/

create or replace package body pkg_1 
as 
procedure main (param1 varchar2, param2 varchar2, param3 int) 
is 
v_sql_script varchar2(1000); 
begin 
case param3 
when 1 then 
v_sql_script := 'begin exec pkg_1.one(:param1,:param2); end;'; 
execute immediate v_sql_script using param1, param2; 
end case; 
end; 

Теперь, когда я выполнить процедуру пакета с следующим утверждением:

exec pkg_1.main('p1','p2',1); 

I got the following error: 

ORA-06550: line 1, column 12: 
PLS-00103: Encountered the symbol "PKG_1" when expecting one of the following: 

    := . (@ % ; 
The symbol ":=" was substituted for "PKG_1" to continue. 

Может кто-то пожалуйста предложить мне то, что я сделали здесь не так?

Thank you.

ответ

5

Похоже, вы выполняете его внутри блока PL/SQL, и в этом случае вам не нужен exec. Просто сделайте pkg_1.main('p1','p2',1); самостоятельно.

Совместимо с частью this question.

+0

Большое вам спасибо. – niceApp

+0

Да, это так. Теперь он отлично работает. – niceApp

Смежные вопросы