2014-04-18 144 views
0

任何人都可以请让我知道我可以在Oracle中执行以下存储过程: -输出的存储过程

create or replace PROCEDURE spValidateDBA(
    UserId IN VARCHAR2, 
    UserPassword IN VARCHAR2, 
    UserRole OUT STRING_ARRAY) 
    AS 
BEGIN 
EXECUTE IMMEDIATE 'select GRANTED_ROLE into UserRole from DBA_USERS DU,DBA_ROLE_PRIVS DRP where DU.USERNAME=UserId and 
    DU.PASSWORD=UserPassword AND DU.USERNAME=DRP.GRANTEE'; 
    END spValidateDBA; 

STRING_ARRAY是本声明声明字符串数组类型: - CREATE TYPE STRING_ARRAY AS TABLE VARCHAR2(50);

请让我知道任何问题。

+0

DBA_USERS表中的'PASSWORD'列仅包含密码哈希值,而不包含明确的密码。 –

+0

有没有办法验证用户验证特定用户的数据库密码? – Saptarsi

+0

我不认为这是可能的。用户在登录数据库时需要输入个人密码。 –

回答

0

你需要编写anonimous PL/SQL块:

DECLARE 
<declare variables> 
BEGIN 
<set values to the variables> 
spValidateDBA(<your variables>); 
END; 
/

如果在SQL * Plus或类似的东西在运行,你需要额外的/在最后。 如果您正在运行某个API,则可能不需要它。