我有一个使用很多对象的功能。
我想通过不触摸功能代码和不触摸对象(对于某些测试)来使该功能状态无效。
是否可以通过命令使功能无效?
类似:
userId | valid | date
1 | null | 2018-07-01
1 | 1 | 2018-07-02
1 | 1 | 2018-07-03
1 | 1 | 2018-07-04
1 | 1 | 2018-07-05
2 | null | 2018-07-01
2 | 0 | 2018-07-02
2 | 0 | 2018-07-03
2 | 1 | 2018-07-04
2 | 1 | 2018-07-05
3 | null | 2018-07-01
3 | null | 2018-07-02
3 | 1 | 2018-07-03
3 | 1 | 2018-07-04
3 | 1 | 2018-07-05
我正在使用Oracle 11g。
答案 0 :(得分:0)
您可以通过REVOKE
获得一些特权来轻松使功能失效。
示例-该函数已授予对表HR.JOBS
的选择
create function job_cnt return number as
v_cnt NUMBER;
begin
select count(*) into v_cnt from hr.jobs;
return (v_cnt);
end;
/
并且是VALID
select OBJECT_NAME, STATUS from user_objects where object_name = 'JOB_CNT';
OBJECT_NAME STATUS
------------ -------
JOB_CNT VALID
通过REVOKE
获得特权,该特权将立即失效。
revoke select on hr.jobs from your_user;
select OBJECT_NAME, STATUS from user_objects where object_name = 'JOB_CNT';
OBJECT_NAME STATUS
------------ -------
JOB_CNT INVALID
请注意,这仅适用于其他所有者的访问,而其他所有者需要显式GRANTS
进行访问。