2014-04-18 195 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,則可能不需要它。