WHERE

2013-05-26 8 views
1

사용자 데이터 (전자 메일, 이름, 성, 사용자 이름, 암호 ..)가있는 테이블이 있고 각 사용자에게 자신의 데이터 만 볼 수 있도록 권한 부여 (예 : 자신의 프로필보기) 권한을 부여하려고합니다. 내가이 방법을 시도하고있다 :WHERE

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 || ';'; 

에 사용자 당 VIEW를 만들 생각이 ..

을 볼 수 없습니다하지만 올바른 방법입니다 나도 몰라

미리 감사드립니다.

+0

'Oracle row-level security'를 검색 할 수 있습니다. – Mat

답변

1

난 당신이보기에 제공하고있는 이름을 이해하지 않지만, 코드가 있어야한다 : 물론

CREATE VIEW my_view_name 
AS 
SELECT * 
FROM CAMP.USERS 
WHERE COD_USUARIO = SYS_CONTEXT('USERENV', 'SESSION_USER') 

을 당신은 당신이 그것을하고있는 염장 한 후 해당 암호 해시하지 않는 경우 모든 잘못된.