当前位置: 首页 > 知识库问答 >
问题:

授予snowflake中所有存储过程的执行权限

仲君昊
2023-03-14

授予Snowflake中所有存储过程的执行权限。

create or replace procedure get_column_scale(column_index float)
    returns float not null
    language javascript
    as
    $$
    var stmt = snowflake.createStatement(
        {sqlText: "select EmployeeKey, EmployeeCode from stproc_test_employees;"}
        );
    stmt.execute();  // ignore the result set; we just want the scale.
    return stmt.getColumnScale(COLUMN_INDEX); // Get by column index (1-based)
    $$
    ;
CALL get_column_scale(1);

我想我需要添加执行权限,但我不知道在雪花中需要在哪里配置存储过程权限。

有人想给存储过程/表权限吗?

共有1个答案

邓禄
2023-03-14

一些可能对你有帮助的事情。

>

  • 我建议在SELECT语句中完全限定表名,这样无论何时调用存储过程用户会话的“上下文”都无关紧要,只要会话的当前角色可以访问表和模式,您就应该很好。
    完全限定表的形式为:database_name.schema_name.object_name

    示例:hr_prod_db.hr_schema.employees

    您可以在以下链接阅读有关对象名称解析的更多信息:https://docs.snowflake.net/manuals/sql-reference/name-resolution.html

    我建议您花一点时间阅读以下链接中的“会话状态”,因为该链接讨论了“调用者的权限”与“所有者的权限”存储过程。如果您的过程只从具有存储过程所有者角色的会话中调用,这应该无关紧要,但如果您将过程的用法授予另一个角色,理解这一点并正确设置这一点非常重要。https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#会话状态

    如果您的过程将被一个将其当前角色设置为与“拥有角色”不同的角色的会话调用,那么您需要确保将过程(和模式+数据库)适当地授予将要执行过程的角色。本文档中对此进行了详尽的概述,请特别注意,因为在示例代码中,表或视图名称与错误消息所报告的名称不同,所以stproc_test_employees可能是syemployees顶部的视图:https://docs.snowflake.net/manuals/sql-reference/storeding-procedures-usage.html#access-control-privileges注意:当/如果将此过程的使用授权给另一个角色时,需要包括参数的数据类型,例如:

    将database_name.schema_name.get_column_scale(float)上的用法授予角色other_role_name_here;

    我希望这能帮上忙...里奇

  •  类似资料:
    • 问题内容: 我有一个脚本,可以创建数据库,存储的proc,视图,表,udf。我想包含一个脚本来创建用户’user_1’并授予对数据库的执行权限。 我尝试以下为所有存储的过程创建Grant exec命令 但是不起作用。它给 ’;’附近的语法不正确。 我该如何解决? 问题答案: 创建登录名:创建服务器级别的登录名。然后…创建用户:让登录帐户附加到您的数据库。然后…将执行权限授予:向您的数据库中的所有s

    • 问题内容: 假设我有一个名为 a.py 的python脚本,如下所示: 我可以通过两种方式运行此脚本: 使用python解释器: 变更权限 问题 如何在不使用所有时间的情况下运行任何新的或旧的python脚本。 我对我的计算机具有root访问权限和用户访问权限。 基本上我想要所有.py文件的可执行权限,我们该怎么做? 我尝试了不同的shebang,例如: python解释器也位于$ PATH中。e

    • 作为Hibernate中BLOB值的后期创建钩子的替代方法,我认为数据库内触发器是更好的解决方案,因此我尝试编写以下触发器: 将与触发器一起使用,例如: 然而,我无法计算出构建语句的语法。 [2022-03-09 16:14:51][42601]ERROR:语法错误在或接近lo_oid [2022-03-09 16:14:51]位置:279 真的不可能像在其他语句中那样使用变量吗?

    • 问题内容: 我已经创建了数据库,例如’mydb’。 现在,我可以从任何地方登录数据库,但是无法创建表。 如何授予该数据库和(将来)表的所有特权。我无法在“ mydb”数据库中创建表。我总是得到: 问题答案: 这就是我创建“超级用户”特权的方式(尽管我通常会指定一个主机)。 虽然此答案可以解决访问问题,但可以创建一个MySQL用户,该用户可以编辑其他用户的权限。 使用GRANT OPTION特权,您

    • 在Ora11g中,我使用以下方式向用户授予所有权限。 但在ORA12C中,当我执行grant privileges时,我得到以下错误。 从命令-授予创建会话,向xx授予任何权限错误报告-ORA-00604:递归SQL级别1 ORA-20997发生错误:“授予任何权限”授予不允许的ORA-06512:在“RDSADMIN.RDSADMIN”处,第79行ORA-06512:在第2 00604行。000

    • 问题内容: 我在执行以下操作的应用程序时遇到问题: PL / SQL包“ A”包含应用程序的所有功能/过程 “ A”归“ USER_A”所有 “ A”在Oracle中创建用户帐户,并在这些用户下创建表 ‘A’还必须能够对用户表进行TRUNCATE / INSERT 注意-所有创建的表都位于安全性较低的表空间内,我们将其称为“ MY_TS”。尽管此程序包在每个新用户的架构中创建用户和表,但“ A”无