Oracle 存储过程的输出

Oracle 存储过程的输出,oracle,stored-procedures,Oracle,Stored Procedures,任何人都可以告诉我如何在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_PR

任何人都可以告诉我如何在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是此语句中声明的字符串的数组类型:- 创建类型字符串_数组作为VARCHAR2(50)的表


如果有任何问题,请告诉我。

您需要编写一个大型pl/sql块:

DECLARE
<declare variables>
BEGIN
<set values to the variables>
spValidateDBA(<your variables>);
END;
/
声明
开始
spValidateDBA();
结束;
/
如果您使用的是SQL*Plus或类似的工具,那么在最后需要额外的/。
如果您正在运行某些API,您可能不需要它。

DBA\U USERS
中的列
PASSWORD
只包含密码哈希,而不是清晰的密码。那么有没有办法针对特定用户验证db密码以进行用户验证?我认为这是不可能的。当用户登录到必须输入其个人密码的数据库时,将对其进行验证。获取所需信息的较短方法可能是此函数:。它还包括角色是否被授予另一个角色。