Я хотел бы подтвердить свое наблюдение о получении разных результатов от CURRENT_ROLE () при вызове из процедуры по сравнению с UDF ..
Например, из пользовательского интерфейса я создаю процедуру и функцию как role_A:
create or replace procedure tst_exec_owner_proc()
returns VARCHAR
language javascript
as
$$
// Set the second session variable
var stmt = snowflake.createStatement(
{sqlText: "select CURRENT_ROLE();"}
);
var rs = stmt.execute();
rs.next();
return rs.getColumnValue(1);
$$
;
create or replace function tst_exec_owner_func()
returns VARCHAR
as
$$
select current_role()
$$;
Теперь при вызове процедуры и функции возвращается «role_A»; Но как только я переключаюсь на role_B, вызов tst_exec_owner_pro c () возвращает «role_A», тогда как select tst_exec_owner_fun c () возвращает «role_B». Это ожидаемое поведение (при условии, что role_A и role_B имеют необходимые права USAGE)?