2009-08-20 17 views
1

我試圖運行中的SQLPlus下面的代碼:如何在SQLPlus中運行PL/SQL代碼?

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 

在我看來,有什麼東西我做錯了與語法。我只是不確定它是什麼。任何幫助,將不勝感激。謝謝:)

回答

4

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; 
/