在SQL脚本中授予存储过程权限。

7 浏览
0 Comments

在SQL脚本中授予存储过程权限。

我有一个包含创建存储过程语句的.sql文件,后面跟着一个授权语句,如下所示:

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

如果我移除授权语句,一切都正常。然而,如果包含授权语句,就会出现以下错误。

Error(23,1): PLS-00103: 遇到符号"GRANT"

我在这里漏掉了什么?在脚本中是否可以不包含授权语句,就像在使用create语句时一样?

0
0 Comments

在上述的SQL脚本中,出现了一个问题:没有在END关键字后面添加一个斜杠。这个问题导致了在给存储过程授权时出现了错误。为了解决这个问题,只需要在END关键字后面添加一个斜杠即可。

下面是修复后的SQL脚本:

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

通过添加斜杠,问题得到了解决。现在,可以正确地给存储过程授权。

0
0 Comments

在使用sqlplus时,对于普通的SQL语句(如select、insert、delete)和DDL语句(如ALTER、CREATE TABLE)而言,在查询的末尾添加一个“/”或者“;”是可以正常运行的。然而,对于包含PL/SQL代码的语句,比如CREATE FUNCTION、CREATE PROCEDURE、CREATE PACKAGE、CREATE TYPE,或者匿名块(DECLARE/BEGIN/END),仅仅在末尾添加一个分号是不够的,我们需要添加一个“/”来执行命令。

因此,在END语句的末尾添加一个“/”即可正常运行。

在使用Oracle SQL Plus时,有用户在执行存储过程的SQL脚本时遇到了问题。他发现,对于包含存储过程的脚本,仅仅在END语句的末尾添加分号是无法执行的。他在stackoverflow上提问,询问如何正确结束SQL文件中的命令。

根据stackoverflow上的回答,我们得知对于包含存储过程的脚本,在END语句的末尾添加一个“/”即可解决问题。

以上就是关于"Grant permission to stored procedure in sql script"问题的出现原因以及解决方法的整理。

0