基表1
交易表
我想根据我的基表 1 更新我的事务表 Brcode。你能帮我解决这个问题吗?
update trans tl
set brcode = (
select brcode
from basetbl tlb
where tl.accountno=tlb.accountno
);
Run Code Online (Sandbox Code Playgroud)
这个查询需要很长时间。
如果我从 admin1 访问表 emp,则使用下面的函数,理想情况下它应该返回 0,这表示连接用户为“ADMIN”,但它返回 1(最终用户的连接使用 ADMINT_TEST1.emp)
即使选择audit_test1.emp(函数 check_user 在两种模式中都可用),我也希望获得 ADMIN1 用户的连接标识,例如:来自 admin1 用户
create or replace function check_user
return number
is
n number;
begin
SELECT sys_context('USERENV', 'CURRENT_USER') into usrname FROM dual;
if (usrname ='AUDIT_TEST') then
dbms_output.put_line('show user'||usrname);
return 1;
else
return 0;
end if;
end ;
Run Code Online (Sandbox Code Playgroud)
测试功能(从用户运行:ADMIN1)
declare
n number(1);
begin
select audit_test.check_user into n from dual;
dbms_output.put_line(n);
select check_user into n from dual;
dbms_output.put_line(n);
end;
/
Output
===============
show user AUDIT_TEST
1
show user ADMIN1
0
Run Code Online (Sandbox Code Playgroud)
这是预期的功能吗?即使发起用户是 ADMIN1,当我们发出 …