Oracle 向sql脚本中的存储过程授予权限
我有一个Oracle 向sql脚本中的存储过程授予权限,oracle,plsqldeveloper,Oracle,Plsqldeveloper,我有一个.sql文件,其中包含create procedure语句,后跟grant语句,如下所示 create or replace PROCEDURE PROCEDURE_NAME() AS BEGIN ..................... END; GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME; 如果我删除授权声明,一切正常。然而,对于grant语句,它给出了以下错误 Erro
.sql
文件,其中包含create procedure语句,后跟grant语句,如下所示
create or replace
PROCEDURE PROCEDURE_NAME()
AS
BEGIN
.....................
END;
GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME;
如果我删除授权声明,一切正常。然而,对于grant语句,它给出了以下错误
Error(23,1): PLS-00103: Encountered the symbol "GRANT"
我错过了什么?grant语句是否可以不包含在脚本中,就像我们将它与
create
语句一起使用时一样?我想,您在结尾后面缺少了一个斜杠
create or replace
PROCEDURE PROCEDURE_NAME()
AS
BEGIN
.....................
END;
/ --> this
GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME;
我猜,你错过了一条斜线,在结尾后面
create or replace
PROCEDURE PROCEDURE_NAME()
AS
BEGIN
.....................
END;
/ --> this
GRANT EXECUTE ON PROCEDURE_NAME TO ROLE_NAME;
在sqlplus中,对于正常的sql语句,如
select
,insert
,delete
DDL(ALTER,CREATE TABLE
等),查询末尾的/
或;
都可以正常工作
但是,对于PL/SQL代码,例如包含CREATE FUNCTION
、CREATE PROCEDURE
、CREATE PACKAGE
、CREATE TYPE
、或匿名块(DECLARE/BEGIN/END
)的代码,末尾的分号是不够的。我们需要//code>来执行命令
因此,在END;
之后包含一个/
,它应该可以正常工作
在sqlplus中,对于正常的sql语句,如选择,插入,删除DDL(更改,创建表等,查询末尾的/
或;
都可以正常工作
但是,对于PL/SQL代码,例如包含CREATE FUNCTION
、CREATE PROCEDURE
、CREATE PACKAGE
、CREATE TYPE
、或匿名块(DECLARE/BEGIN/END
)的代码,末尾的分号是不够的。我们需要//code>来执行命令
因此,在END;
之后包含一个/
,它应该可以正常工作