在SQL脚本中授予存储过程权限。
在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
语句时一样?
在使用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"问题的出现原因以及解决方法的整理。