在pl/sql脚本中切换用户会话
我想切换会话用户,但我在connect karuna/karuna行中遇到错误查看Oracle的n层功能 (代理)身份验证。也许这不是你需要的。Oracle为您提供:在pl/sql脚本中切换用户会话,sql,oracle,plsql,Sql,Oracle,Plsql,我想切换会话用户,但我在connect karuna/karuna行中遇到错误查看Oracle的n层功能 (代理)身份验证。也许这不是你需要的。Oracle为您提供: n层身份验证 set role语句(从密码“受保护”的角色获取更多权限) alter session set current_schema=KARUMA。这不会切换您的用户名/权限,而是切换默认模式 正确的选择取决于您的需要。您必须授予dba从您的用户连接到KARUMA用户的权限或连接权限 请点击此链接 错误是什么?另外,它是
- n层身份验证
- set role语句(从密码“受保护”的角色获取更多权限)
- alter session set current_schema=KARUMA。这不会切换您的用户名/权限,而是切换默认模式
正确的选择取决于您的需要。您必须授予dba从您的用户连接到KARUMA用户的权限或连接权限 请点击此链接
错误是什么?另外,它是karuna/password还是karuna/karuna?不是SQL,所以不能从PL/SQL块调用。为什么你想重新连接;您连接的用户在不公开整个
karuna
schema的情况下无法拥有所需权限的原因是什么?您是否只想避免使用模式作为对象的前缀(例如,alter session set current\u schema='KARUNA'
)?您好,各位thanx谢谢您的回复事实上,我有一个表,其中包含一些值,其他用户以及该表的所有者可以访问这些值。但是对于其他用户不能直接访问该表,他们必须通过安全算法,如果他们通过了算法,那么只有他们才能访问该表,这就是我想使用的原因当用户连接到数据库时,它将被重定向到我们必须访问的表的所有者。这就是为什么我必须在单个脚本中更改datbase用户。
set serveroutput on;
declare
username1 varchar2(40);
cnt number;
hello varchar2(20);
c sys_refcursor;
begin
select sys_context('userenv','session_user') into username1 from dual;
select lower(username1) into username1 from dual;
select count(lower(username)) into cnt from karuna.tableusers where lower(username)=username1;
if cnt=1 then
dbms_output.put_line('username found');
execute immediate 'connect karuna/password ';
open c for 'select item_name from sells12 where item_id=12';
fetch c into hello;
dbms_output.put_line(hello);
close c;
else
dbms_output.put_line('u dont have previllege to access database');
----raise_application_error(-20001,'error out');
end if;
end;
/