【发布时间】:2020-12-21 11:09:08
【问题描述】:
我正在 TeraData Studio 中创建一个易失性表,位于 procedure 内。我收到一个错误:
Executed as Single statement. Failed [5315 : HY000] SP_EMPLOYEE:An owner referenced by user
does not have SELECT access to DB_EMP.all_emp.code.
Elapsed time = 00:00:00.109
我知道它与GRANT 选项有关,但我无法正确应用它。这是一段小sn-p代码:
replace PROCEDURE DBX_HOME.SP_Employee(IN variable INTEGER)
begin
CREATE VOLATILE TABLE TEST_TABLE AS(
SELECT distinct ID
FROM DB_EMP.all_emp as prod left join DB_EMP_DWH.ID_no as infra
ON prod.code=infra.code_infra
WHERE AND ID MOD 3 = :variable )WITH DATA ON COMMIT PRESERVE ROWS;
end;
-- Run the code below.
CALL DBX_HOME.SP_Employee(0)
我关注了这个link,但我无法正确申请GRANT OPTION。谁能建议在哪里授予权限以避免此错误?
【问题讨论】:
-
根据您的需要,您可以尝试不同的
SQL SECURITY设置:docs.teradata.com/reader/scPHvjfglIlB8F70YliLAw/… 可能是 CREATOR 或 INVOKER -
感谢您的提示。我需要在程序中的哪里应用设置?
-
它是 CREATE 的一部分:
replace PROCEDURE DBX_HOME.SP_Employee(IN variable INTEGER) SQL SECURITY CREATOR begin -
关于 GRANT 将是
grant select on DB_EMP.all_emp to DB_where_SP_is_created WITH GRANT OPTION -
先生,我是 TeraData 的初学者,对
Grant不了解。我不知道你做了什么魔法,但它已经解决了这个问题。我不再收到任何错误。我刚刚添加了SQL SECURITY CREATOR,它起作用了。您能否在答案中添加此内容,以便我接受?
标签: sql stored-procedures teradata