help:VPD and the error:ORA-01732: data manipulation operation not legal on this view
- From: "xiaoyan" <xiaoyezi.xyz@xxxxxxx>
- To: <oracle-l@xxxxxxxxxxxxx>
- Date: Thu, 31 Aug 2006 17:34:53 +0800
Hi,
During my stduy of VPD,I got the following error: ORA-01732: data
manipulation operation not legal on this view
when I execute a delete statment on a TABLW not on a VIEW!
There are two tables:SCORES and COURSES like the followings:
SQL>conn wxy/wxy;
SQL> select * from scores;
SCORE DESCRIPTION
------ --------
10 a
20 b
30 c
50 d
60 e
SQL> select * from courses;
COURSE_ID COURSE_INFO COURSE_SCORE COURSE_NAME
---------- ------------------------------------------------------------
4 efef 10 d
3 tr 30 test
6 t4t 50 test
5 g4fe 10 b
1 fe3fe 20 a
2 rwfe3fe 50 f
Then I create two VPD functions:
SQL>conn test_system/test_system;
CREATE OR REPLACE FUNCTION select_limits (schema_name_in
VARCHAR2,table_name_in VARCHAR2) RETURN VARCHAR2
IS
predicate VARCHAR2(4000);
BEGIN
predicate:='score>30';
RETURN predicate;
END;
CREATE OR REPLACE FUNCTION delete_limits (schema_name_in
VARCHAR2,table_name_in VARCHAR2) RETURN VARCHAR2
IS
predicate VARCHAR2(4000);
BEGIN
predicate:='course_name=''test''';
RETURN predicate;
END;
And then I apply the policy to those two tables:
SQL>
DBMS_RLS.ADD_POLICY('wxy','scores','select_policy','test_system','select_limits','select',TRUE,TRUE);
SQL>
DBMS_RLS.ADD_POLICY('wxy','courses','delete_policy','test_system','delete_limits','delete',TRUE,TRUE);
Now I make some tests:
SQL>conn wxy/wxy;
SQL>select * from scores;
SCORE DESCRIPTION
------ --------
50 d
60 e
SQL>delete courses;
SQL>select * from courses;
COURSE_ID COURSE_INFO COURSE_SCORE COURSE_NAME
---------- ------------------------------------------------------------
4 efef 10 d
5 g4fe 10 b
1 fe3fe 20 a
2 rwfe3fe 50 f
SQL>rollback;
SQL>delete courses where course_score=(select score from scores where
description=d);
ORA-01732: data manipulation operation not legal on this view
Then I got the error!Who can tell me where is the problem and how to solve it?
Thank you in advance!
Best Regards.
Other related posts:
- » help:VPD and the error:ORA-01732: data manipulation operation not legal on this view