Каков правильный синтаксис для разбиения вызова процедуры PL / SQL на несколько строк? - PullRequest
5 голосов
/ 25 декабря 2010

Я вызываю процедуру PL / SQL следующим образом:

execute util.verify(src_schema => '&username',
                    stab       => '&tab_name');

и получаю следующие ошибки:

SQL> execute util.verify(src_schema => '&username',
BEGIN util.verify(src_schema => 'u1',; END;

                                     *
ERROR at line 1:
ORA-06550: line 1, column 57: 
PLS-00103: Encountered the symbol ";" when expecting one of the following:
( - + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current exists max min prior sql stddev
sum variance execute forall merge time timestamp interval
date <a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively


SQL>                   stab       => '&tab_name',
SP2-0734: unknown command beginning "stab      ..." - rest of line ignored.

Похоже, я не могу просто разорвать вызов между,.Как я могу написать этот вызов в несколько строк?

Ответы [ 3 ]

11 голосов
/ 25 декабря 2010

В SQLPlus вы ставите дефис в конце строк, который продолжается на следующей строке.

execute util.verify(src_schema => '&username', -
                    stab       => '&tab_name');

Обновление : добавлена ​​ссылка на документацию

EXECUTE, Руководство пользователя и справочник по SQL * Plus®

6 голосов
/ 25 декабря 2010

Существует альтернативный способ, например, ниже:

begin
    util.verify(src_schema => '&username',
                    stab       => '&tab_name');
end;
/
5 голосов
/ 25 декабря 2010

execute xxxx; (или exec xxxx;) - это сокращение для записи begin xxxx; end;

Работает только для одного лайнера. Поэтому, если у вас несколько строк, вам нужно явно использовать begin и end.

...