代码之家  ›  专栏  ›  技术社区  ›  jtbradle

如何在SQLPlus中运行PL/SQL代码?

  •  1
  • jtbradle  · 技术社区  · 16 年前

    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 回复  |  直到 16 年前
        1
  •  4
  •   Jeffrey Kemp    16 年前

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