Как запустить код PL / SQL в SQLPlus? - PullRequest
1 голос
/ 20 августа 2009

Я пытаюсь запустить следующий код в SQLPlus:

exec lbacsys.sa_sysdba.create_policy(policy_name => 'ACCESS_LOCATIONS',
                                      column_name => 'OLS_COLUMN',
                                      default_options => 'READ_CONTROL,INSERT_CONTROL,UPDATE_CONTROL,DELETE_CONTROL,LABEL_DEFAULT,LABEL_UPDATE,CHECK_CONTROL,');

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

BEGIN lbacsys.sa_sysdba.create_policy(policy_name => 'ACCESS_LOCATIONS',; END;

                                                                        *
ERROR at line 1:
ORA-06550: line 1, column 78:
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

Мне кажется, что-то не так с синтаксисом. Я просто не уверен, что это такое. Любая помощь будет оценена. Спасибо:)

1 Ответ

4 голосов
/ 20 августа 2009

Оператор EXEC берет строку кода и переносит ее в блок BEGIN / END. В этом случае вы хотите разделить ваш вызов на несколько строк кода, поэтому вам, вероятно, будет проще добавить BEGIN / END самостоятельно:

BEGIN
  lbacsys.sa_sysdba.create_policy(policy_name => 'ACCESS_LOCATIONS',
                                  column_name => 'OLS_COLUMN',
                                  default_options =>
       'READ_CONTROL,INSERT_CONTROL,'
    || 'UPDATE_CONTROL,DELETE_CONTROL,'
    || 'LABEL_DEFAULT,LABEL_UPDATE,CHECK_CONTROL,');
END;
/
...