我想要通过创建应用环境,让用户zlr只能访问表A中用户名属于他自己的几条数据。
然后创建一个触发器实现用户登录时,获取用户名,如下:出现错误(加粗的错误信息)。
SQL> conn zlr/zhou14@practice;
SQL> create or replace package zlr_context as
  2  procedure select_xingming;
  3  end;
  4  /程序包已创建。SQL> create or replace package body zlr_context as
  2  procedure select_xingming is
  3  newxuhao number;
  4  begin
  5  select xuhao into newxuhao from A where upper(xingming)=
  6  sys_context('userenv','session_user');
  7  dbms_session.set_context('A_info','A_num',newxuhao);
  8  end select_xingming;
  9  end;
 10  /程序包体已创建。SQL> conn system/zhou14@practice;
已连接。
SQL>  create or replace trigger zlr.security_context
  2  after logon on database
  3  begin
  4  zlr_context.select_xingming;
  5  end;
  6  /触发器已创建SQL>  conn zlr/zhou14@practice
ERROR:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在 "ZLR.ZLR_CONTEXT", line 5
ORA-06512: 在 line 2
警告: 您不再连接到 ORACLE。
SQL>