Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Como encontrar generadas Funciones del usuario?

Estas en el tema de Como encontrar generadas Funciones del usuario? en el foro de Oracle en Foros del Web. Hola Gente, Necesito que me ayuden con algo básico en Oracle, se trata de buscar una función específica y no se como encontrar donde esta ...
  #1 (permalink)  
Antiguo 21/05/2014, 09:34
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Pregunta Como encontrar generadas Funciones del usuario?

Hola Gente,
Necesito que me ayuden con algo básico en Oracle, se trata de buscar una función específica y no se como encontrar donde esta almacenado.
Esta es la función:
Código:
 (SELECT ARADMIN.TEF_SELECTION_VALUES ('AST:ComputerSystem',
                                        260000000,
                                        a.ACQUIREDMETHOD)
             FROM DUAL)

Hay muchas funciones dentro de "TEF_SELECTION_VALUES" y quiero encontrar una función específica.
Gracias por su ayuda.
__________________
http://about.me/jemano
  #2 (permalink)  
Antiguo 21/05/2014, 09:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Código SQL:
Ver original
  1. SELECT DISTINCT b.object_name, a.owner "Esquema"
  2.            FROM dba_source a, dba_objects b
  3.           WHERE b.object_name = a.NAME
  4.             AND b.object_type = a.TYPE
  5.             AND b.owner = a.owner
  6.             AND UPPER(b.object_name) = 'TEF_SELECTION_VALUES'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/05/2014, 09:55
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Pregunta Respuesta: Como encontrar generadas Funciones del usuario?

Siempre contando con tu ayuda gnzsoloyo,
Tengo un problema y es que no se como encontrar los demás parámetros de la consulta.
Código SQL:
Ver original
  1. FROM dba_source a, dba_objects b
Sale el error de la tabla o vista no existe.
Seguro pusiste de referencia, pero alguna forma de como encontrar esas tablas?
Gracias
__________________
http://about.me/jemano

Última edición por gnzsoloyo; 21/05/2014 a las 10:02
  #4 (permalink)  
Antiguo 21/05/2014, 10:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Es un problema de provilegios, no de tablas.
Esas tablas requieren permisos de acceso determinados, por lo que el user que utilizas no debe poder verlas.
Reemplaza esto:
Código SQL:
Ver original
  1. FROM dba_source a, dba_objects b
por esto:
Código SQL:
Ver original
  1. FROM all_source a, all_objects b
Si el problema permanee, deberás cambiar de user.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/05/2014, 10:27
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Pregunta Respuesta: Como encontrar generadas Funciones del usuario?

gnzsoloyo,
Con
Cita:
FROM all_source a, all_objects b
Funcionó!
Pero, sólo me devuelve un registro y esa información ya la conozco, lo que quiero saber es:

Código:
 (SELECT ARADMIN.TEF_SELECTION_VALUES ('AST:ComputerSystem',
                                        260000000,
                                        a.ACQUIREDMETHOD)
             FROM DUAL)
Por ejemplo cual es la función para el segundo parámetro: 301016200, 1000000163, 301172600, etc... y lo mismo para el tercer parámetro.
En conclusión quiero saber todas las funciones almacenadas dentro de "TEF_SELECTION_VALUES"
Hay alguna forma de saberlo?
Gracias
__________________
http://about.me/jemano
  #6 (permalink)  
Antiguo 21/05/2014, 10:36
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Como encontrar generadas Funciones del usuario?

Esto es lo que encontré en esa función, por favor abuso de tu confianza para saber donde se almacenan todas las funciones.
Gracias!!!
Código:
"FUNCTION TEF_SELECTION_VALUES ( FORMULARIO VARCHAR2, IDFIELD VARCHAR2, P_CODIGO NUMBER) RETURN varchar2 IS
"
"
"
"    XXXX                      VARCHAR2(90);
"
"    L_TEF_TAB_SELECT_VALUES   TEF_TAB_SELECT_VALUES:= TEF_TAB_SELECT_VALUES();
"
"    F_DATOS                   VARCHAR2(4000);
"
"    F_ELEMENTOS               NUMBER(15);
"
"    F_LONGUITUD               NUMBER(15);
"
"    L_LOCALE                  VARCHAR2(30);
"
"    L_VALUE                   VARCHAR2(255);
"
"    L_NUMBER                  NUMBER(15);
"
"    X                         NUMBER(15) :=0;
"
"    R                         NUMBER(15) :=0;
"
"    CURSOR C1 IS
"
"        SELECT DISTINCT
"
"                       TO_NUMBER(FUENTE.LONGUITUD, '999990') AS LONGUITUD,
"
"                       TO_NUMBER(SUBSTR(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)+1), 1, INSTR(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)+1), '\')-1), '999990') AS ELEMENTOS,
"
"                       SUBSTR(SUBSTR(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)+1), INSTR(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)+1), '\'), LENGTH(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)+1))-INSTR(SUBSTR(FUENTE.CADENA, LENGTH(FUENTE.LONGUITUD)+2, LENGTH(FUENTE.CADENA)-LENGTH(FUENTE.LONGUITUD)), '\')), 1,  FUENTE.LONGUITUD) AS CADENA,
"
"                       FUENTE.LOCALE AS LOCALE
"
"        FROM
"
"        (SELECT SUBSTR(SUBSTR(NVL(PROPSHORT, PROPLONG), INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')+7, LENGTH(NVL(PROPSHORT, PROPLONG))-INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')), 1, INSTR(SUBSTR(NVL(PROPSHORT, PROPLONG), INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')+7, LENGTH(NVL(PROPSHORT, PROPLONG))-INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')), '\')-1) AS LONGUITUD,
"
"                SUBSTR(NVL(PROPSHORT, PROPLONG), INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')+7, LENGTH(NVL(PROPSHORT, PROPLONG))-INSTR(NVL(PROPSHORT, PROPLONG), '\230\4\')) AS CADENA,
"
"                D.LOCALE AS LOCALE
"
"         FROM   ARSCHEMA A, FIELD B, FIELD_DISPPROP C, VUI D
"
"         WHERE  A.SCHEMAID = B.SCHEMAID
"
"         AND    B.SCHEMAID = C.SCHEMAID
"
"         AND    A.SCHEMAID = D.SCHEMAID
"
"         AND    C.FIELDID  = B.FIELDID
"
"         AND    D.VUIID = C.VUIID
"
"         AND    D.LOCALE LIKE 'es%'
"
"         AND    B.FIELDID  = IDFIELD
"
"         AND    A.SCHEMAID = (SELECT SCHEMAID FROM ARSCHEMA WHERE NAME = FORMULARIO)) FUENTE;
"
"
"
"    BEGIN
"
"        OPEN C1;
"
"
"
"        FETCH C1 INTO F_LONGUITUD, F_ELEMENTOS, F_DATOS, L_LOCALE;
"
"
"
"        LOOP
"
"
"
"            IF F_DATOS IS NULL THEN EXIT; END IF;
"
"
"
"            --x :=0;
"
"            R :=0;
"
"
"
"            FOR R IN 1..F_ELEMENTOS LOOP
"
"
"
"                --dbms_output.PUT_LINE(f_datos);
"
"
"
"                SELECT REPLACE(SUBSTR(F_DATOS, 1, INSTR(F_DATOS, '\', 2)), '\', '') INTO L_NUMBER FROM DUAL;
"
"
"
"                --dbms_output.PUT_LINE(l_number);
"
"
"
"                SELECT '\' || REPLACE('@' || F_DATOS, '@' || SUBSTR(F_DATOS, 1, INSTR(F_DATOS, '\', 2)), '') INTO F_DATOS  FROM DUAL;
"
"
"
"                --dbms_output.PUT_LINE(f_datos);
"
"
"
"                SELECT REPLACE(SUBSTR(F_DATOS, 1, INSTR(F_DATOS, '\', 2)), '\', '') INTO L_VALUE FROM DUAL;
"
"
"
"                --dbms_output.PUT_LINE(l_value);
"
"
"
"                SELECT '\' || REPLACE('@' || F_DATOS, '@' || SUBSTR(F_DATOS, 1, INSTR(F_DATOS, '\', 2)), '') INTO F_DATOS FROM DUAL;
"
"
"
"                L_TEF_TAB_SELECT_VALUES.EXTEND;
"
"
"
"                L_TEF_TAB_SELECT_VALUES (X + 1) := TEF_OBJ_SELECT_VALUES(FORMULARIO, IDFIELD, L_NUMBER, L_VALUE, L_LOCALE);
"
"                XXXX:=L_VALUE;
"
"                EXIT WHEN L_NUMBER=P_CODIGO;
"
"                X := X + 1;
"
"
"
"            END LOOP;
"
"
"
"        FETCH C1 INTO F_LONGUITUD, F_ELEMENTOS, F_DATOS, L_LOCALE;
"
"
"
"        EXIT WHEN C1%NOTFOUND;
"
"
"
"    END LOOP;
"
"
"
"    CLOSE C1;
"
"
"
"    RETURN XXXX;
"
"
   END;
__________________
http://about.me/jemano
  #7 (permalink)  
Antiguo 21/05/2014, 10:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Vamos por parte: laquery te devuelve en qué esquema está ese objeto, que por lo que dices no es un SP sino un paqckage, que no es exactamente lo mismo.
¿No tienes ninguna herramienta como para explorar el packge y ver su contenido? ¿Es eso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 21/05/2014, 10:42
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Como encontrar generadas Funciones del usuario?

Con package te refieres a explorar con un cliente?
Si fuera el caso, yo utilizo el toad v12 y tengo un usuario de consulta.
Que herramientas adicionales debería tener?
Agradezco tu guia por favor.
Gracias!
__________________
http://about.me/jemano
  #9 (permalink)  
Antiguo 21/05/2014, 11:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Cita:
Iniciado por Nova Ver Mensaje
Con package te refieres a explorar con un cliente?
Si fuera el caso, yo utilizo el toad v12 y tengo un usuario de consulta.
Que herramientas adicionales debería tener?
Agradezco tu guia por favor.
Gracias!


¿No sabes lo que es un PACKAGE en Oracle?

Es eso que estás buscando que contiene N funciones o procedures dentro.
De lo contrario sería una stored function, sin package, y en ese caso no peude haber sobrecarga. Sólo tendrías una única función, con un único tipo de parámetros de entrada....


Ahora bien, si lo que quieres saber es qué función llama la función para procesar el segundo parámetro, eso lo deberás ver analizando el código de la primera SF... No hay otro camino.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 21/05/2014, 11:13
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Como encontrar generadas Funciones del usuario?

Bueno gnzsoloyo,
Muchas gracias, no me queda de otra que analizar el sql que viene, aunque lo veo en chino.
Saludos
__________________
http://about.me/jemano
  #11 (permalink)  
Antiguo 21/05/2014, 11:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Pues no es muy dificil de ver para qué sirve. El códogo es extremadamente simple.
¿Cuál es el misterio que quieres resolver?
Ese parámetro es simplemente uno valor para el SELECT del CURSOR definido al inicio, y apunta a el valor de un campo de la tabla "FIELD".
No tiene nada de raro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 21/05/2014, 12:03
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Como encontrar generadas Funciones del usuario?

A ver te cuento mi problema.
La BBDD es de BMC Remedy y se supone que esa función esta el detalle de unos combos de texto ya que al explorar la tabla en ese campo sólo se almacenan número ( 45,95,12, etc).
Entonces lo que quiero es obtener el reporte y que este campo no salgan simples números sino su equivalente en texto.
Espero haberme hecho entender.
__________________
http://about.me/jemano
  #13 (permalink)  
Antiguo 21/05/2014, 12:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como encontrar generadas Funciones del usuario?

Analiza la query del CURSOR, allí están las tablas que se invocan.
Sólo tienes que revisar esas tablas para verificar donde está lo que necesitas. Y eso lo puedes hacer con queries simples...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 21/05/2014, 14:20
Avatar de Nova  
Fecha de Ingreso: enero-2003
Ubicación: Hyo
Mensajes: 832
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Como encontrar generadas Funciones del usuario?

Muchas gracias!
Lo revisaré
__________________
http://about.me/jemano

Etiquetas: encontrar, funciones, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:07.