我正在努力为一个简单的存储过程授予执行权限
我使用ROLE SYSADMIN创建以下过程
CREATE OR REPLACE PROCEDURE PUBLIC.SOME_PROC()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
return "Hello";
$$
;
我通过调用对其进行测试
CALL PUBLIC.SOME_PROC();
我批准执行如下
GRANT USAGE ON PROCEDURE PUBLIC.SOME_PROC() TO ROLE UAT_OPERATIONS;
我要换角色
USE ROLE UAT_OPERATIONS;
我尝试再次调用
CALL PUBLIC.SOME_PROC();
然后出现以下错误
SQL错误[2141] [42601]:SQL编译错误:未知的用户定义 函数PUBLIC.SOME_PROC
我想念什么?
答案 0 :(得分:1)
要解决相同的错误,我必须确保还为角色授予特权USAGE ON DATABASE
和USAGE ON SCHEMA
-否则在该角色中工作时会出现Unknown
错误
GRANT USAGE ON DATABASE db TO ROLE UAT_OPERATIONS;
GRANT USAGE ON SCHEMA db.public TO ROLE UAT_OPERATIONS;
GRANT USAGE ON PROCEDURE db.PUBLIC.SOME_PROC() TO ROLE UAT_OPERATIONS;