create or replace procedure wallet(status in varchar2) return varchar2 as  l_result number;
  l_data varchar2(100);
begin
  select status into l_data from v$encryption_wallet;
  case l_data
    when 'OPEN' then
      dbms_output.put_line('OPEN');
    when 'CLOSED' then
      EXECUTE IMMEDIATE 'alter system set wallet open identified by "tddj"';
  end case;
  return status;
end wallet;
测试到执行alter语句的时候提示权限不足,单独把alter语句提出来就能执行,怎么解决

解决方案 »

  1.   

    create or replace function wallet1(status in varchar2) return varchar2 as
      l_result number;
      l_data varchar2(100);
    begin
      select status into l_data from v$encryption_wallet;
      case l_data
        when 'OPEN' then
          dbms_output.put_line('OPEN');
        when 'CLOSED' then
          EXECUTE IMMEDIATE 'alter system set wallet open identified by "tddj"';
      end case;
      return status;
    end wallet1;
    上面代码贴错了 这个才是