Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向snowflake中的所有存储过程授予执行权限_Python_Snowflake Schema_Snowflake Cloud Data Platform - Fatal编程技术网

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

Python 向snowflake中的所有存储过程授予执行权限,python,snowflake-schema,snowflake-cloud-data-platform,Python,Snowflake Schema,Snowflake Cloud Data Platform,向snowflake中的所有存储过程授予执行权限 我在snowflake数据库中创建了一个存储过程,但在尝试执行该存储过程时出错 create or replace procedure get_column_scale(column_index float) returns float not null language javascript as $$ var stmt = snowflake.createStatement( {sqlT

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

我在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);
我在尝试使用Snowflake执行存储过程时遇到此错误

错误[100183][P0000]:存储过程GET\u COLUMN\u SCALE中的执行错误:
编译错误:
“SYEMPLOYEES”不存在或未经授权。
语句.execute,第5行位置9

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


有人知道如何授予存储过程/表的权限吗?

以下几点可能会对您有所帮助

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

    示例:hr_prod_db.hr_schema.employees

  • 您可以通过以下链接了解有关对象名称解析的更多信息:

  • 我建议您在下面的链接中花一点时间阅读关于“会话状态”的内容,因为该链接讨论了“调用方权限”与“所有者权限”存储过程。如果只从具有存储过程所有者角色的会话调用您的过程,这应该无关紧要,但是如果要将过程的使用权授予另一个角色,那么理解这一点并正确设置它是非常重要的。

  • 如果您的过程将由会话调用,而会话的当前角色设置为与“拥有者”角色不同的角色,则需要确保过程(和架构+数据库)具有适当的授权对于将要执行该过程的角色。本文档中对此进行了全面概述,请特别注意,因为在示例代码中,您的表或视图名称与您的错误消息报告的名称不同,因此stproc_test_employees可能是SYEMPLOYEES之上的一个视图: 注意:当/如果将此过程的使用权授予其他角色,则需要包括参数的数据类型,例如:

    在数据库\名称。模式\名称。获取\列\比例(浮点)到角色其他\角色\名称\的使用权

  • 我希望这有助于…Rich