我有一个包含用户数据(电子邮件、姓名、姓氏、用户名、密码..)的表,我想允许每个用户只看到他自己的数据(比如查看他的个人资料)。我一直在尝试这样做:
create or replace
PROCEDURE PR_OWNDATA AS
BEGIN
FOR userRow IN (SELECT COD_USUARIO, USERNAME FROM CAMP.USERS) LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON CAMP.USERS TO "' || userRow.USERNAME || '" WHERE COD_USUARIO = ' || userRow.COD_USUARIO || ';';
END LOOP;
END PR_OWNDATA;
它不起作用(ORA 06550“第 %s 行,第 %s 列:\n%s”)。但我看不出问题出在哪里。。
我考虑过以这种方式为每个用户创建一个视图
CREATE VIEW userRow.USERNAME.V_DATOSALUMNO AS SELECT * FROM CAMP.USERS WHERE COD_USUARIO = ' || userRow.COD_USUARIO || ';';
但我不知道这是否是正确的方法..
先感谢您。