1
« en: Miércoles 25 de Julio de 2007, 00:27 »
Hola a todos.
Tengo un problema al realizar un cambio de contraseñas en usuarios ORACLE.
El problema radica que son tres bases de datos diferentes. El usuario de ORACLE es el mismo y lo estoy haciendo de esta manera:
en un procedimiento almacenado.
es la forma de hacerlo?
CREATE OR REPLACE PROCEDURE fin_cambia_password_v1
(
P_USUARIO IN OUT VARCHAR2,
P_PASSWORD IN OUT VARCHAR2,
P_DETALLE_SALIDA OUT VARCHAR2
)
IS
V_CONTROL NUMBER:=0;
V_DETALLE VARCHAR2(200);
V_DETALLE_SC VARCHAR2(4000);
V_DETALLE_PCB VARCHAR2(4000);
BEGIN
P_USUARIO := UPPER(P_USUARIO);
P_PASSWORD := UPPER(P_PASSWORD);
BEGIN
V_DETALLE := 'SELECT DE STARCOM';
SELECT COUNT(*)
INTO V_CONTROL
FROM ALL_USERS@PRIMERA U
WHERE U.USERNAME = P_USUARIO;
EXCEPTION WHEN OTHERS THEN
NULL;
END;
/*VERIFICA QUE EL USUARIO EXISTA EN LA PRIMERA BASE DE DATOS */
IF V_CONTROL <> 0 THEN
finanzas.fin_cambia_password_v1@starcom(P_USUARIO,P_PASSWORD,V_DETALLE_SC);
END IF;
BEGIN
SELECT COUNT(*)
INTO V_CONTROL
FROM ALL_USERS@SEGUNDA U
WHERE U.USERNAME = P_USUARIO;
EXCEPTION WHEN OTHERS THEN
NULL;
END;
IF V_CONTROL <> 0 THEN
finanzas.fin_cambia_password_v1@pcb(P_USUARIO,P_PASSWORD,V_DETALLE_PCB);
END IF;
EXECUTE IMMEDIATE ('ALTER USER ' || P_USUARIO || ' IDENTIFIED BY "' ||P_PASSWORD||'"');
END fin_cambia_password_v1;