据需求及Oracle特性,限制用户获取数据可通过存储过程方式实现特定数据的访问,再通过特定用户来限制提取相关数据。
举例如下:如需求是计划访问MYEST用户下的表TP1,为限制其访问权限,创建存储过程TP1_SELECT,再通过新建用户USER2021来执行TP1_SELECT获取指定数据。
除了 使用存储过程直接输出到控制台,还有什么方式呢? 参考如下:
create or replace procedure czrk01_select(V_SFZH in varchar2,OUT_LIST out sys_refcursor)
is
begin
open OUT_LIST for select RKBM,GMSFHM,XM,HH,YHZGXDM,XBDM,MZDM,CSRQ,JG_SSXQDM
from TP1 where gmsfhm=V_SFZH;
end;
/
--调用如下:
SET AUTOPRINT ON
set lines 2000
var out_list refcursor;
exec czrk01_select('371481198007110',:OUT_LIST);
--其他调用参考:
DECLARE
OUT_LIST SYS_REFCURSOR; --使用系统预定义的sys_refcursor
cemp tp1%rowtype;
BEGIN
exectltable(OUT_LIST);
LOOP
FETCH OUT_LIST INTO cemp;
EXIT WHEN OUT_LIST%notfound; --游标一条一条地遍历记录,当找不到记录时退出
dbms_output.put_line(cemp.rkbm||' '||cemp.gmsfhm||' '||cemp.xm);
END LOOP;
CLOSE ctl_out;
END;