授予 sql 脚本中存储过程的权限
Grant permission to stored procedure in sql script
我有一个 .sql
文件,其中包含创建过程语句,后跟一个授权语句,如下所示。
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
语句一起使用时那样吗?
我想您在 END 后面少了一个斜线;
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
), 末尾的分号是不够的。我们需要一个/
来执行命令。
因此,在 END;
之后添加一个 /
,它应该可以正常工作。
oracle SQL plus how to end command in SQL file?
我有一个 .sql
文件,其中包含创建过程语句,后跟一个授权语句,如下所示。
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
语句一起使用时那样吗?
我想您在 END 后面少了一个斜线;
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
), 末尾的分号是不够的。我们需要一个/
来执行命令。
因此,在 END;
之后添加一个 /
,它应该可以正常工作。
oracle SQL plus how to end command in SQL file?