Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在pl/sql脚本中切换用户会话_Sql_Oracle_Plsql - Fatal编程技术网

在pl/sql脚本中切换用户会话

在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用户的权限或连接权限 请点击此链接 错误是什么?另外,它是

我想切换会话用户,但我在connect karuna/karuna行中遇到错误

查看Oracle的n层功能 (代理)身份验证。也许这不是你需要的。Oracle为您提供:

  • 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;

/