我想要通过创建应用环境,让用户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>
然后创建一个触发器实现用户登录时,获取用户名,如下:出现错误(加粗的错误信息)。
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>
解决方案 »
- 问个oracle搜索问题
- 求解: ORA-12154:TNS:监听程序当前无法解析指定的连接描述标符中请求的服务
- 在版本高于9206的时候,有没有其它方法,可以代替ORA_SQL_TXT函数,用来实现update ,delete ,insert触发器的日志?
- 请教各位兄弟:oracle使用存储过程查询的语句怎么写啊,总是搞不定,求各位帮忙!
- exp和imp备份恢复数据怎么才能把数据库用户的信息导过来?
- 如何在linux上用命令启动“managerservice”服务?
- 我用的是WINDOWS版的ORACLE,我想求 利用命令行开始启动和关闭数据库的命令格式.
- GLOBAL TEMPORARY的问题
- oracle新手问:oracle8.1.6安装问题
- 有几个问题,请高手指教
- 求教一条定时器的SQL语句。。希望大牛帮忙啊
- oracle 增加表空间文件
但是我要选择的zlr用户本来就有3条记录啊