【问题标题】:Grant permission to stored procedure in sql script授予对sql脚本中存储过程的权限
【发布时间】:2018-02-15 18:21:19
【问题描述】:

我有一个 .sql 文件,其中包含创建过程语句,后跟一条授权语句,如下所示。

    create or replace
    PROCEDURE PROCEDURE_NAME()
    AS 
      BEGIN
      .....................
      END;

GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME;

如果我删除授权声明一切正常。但是使用授权语句会出现以下错误。

Error(23,1): PLS-00103: Encountered the symbol "GRANT" 

我在这里缺少什么?是否可以像我们将其与create 语句一起使用时那样将授权语句不包含在脚本中?

【问题讨论】:

    标签: oracle plsqldeveloper


    【解决方案1】:

    我猜你在 END 后面少了一个斜线;

    create or replace
        PROCEDURE PROCEDURE_NAME()
        AS 
          BEGIN
          .....................
          END;
    /                --> this
    
    GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME;
    

    【讨论】:

      【解决方案2】:

      在 sqlplus 中,对于普通的 sql 语句,如 selectinsertdelete DDL(ALTER,CREATE TABLE 等,/; 在查询末尾都可以正常工作。

      但是,对于诸如CREATE FUNCTIONCREATE PROCEDURECREATE PACKAGECREATE TYPE 或匿名块 (DECLARE/BEGIN/END) 之类的 PL/SQL 代码,末尾的分号是不够的。我们需要一个/ 来执行命令。

      所以,在END; 之后包含一个/,它应该可以正常工作。

      oracle SQL plus how to end command in SQL file?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 2011-03-23
        • 2018-11-20
        • 2020-03-16
        相关资源
        最近更新 更多