oracle - salida - Recuperando esquema de procedimiento PL/SQL
procedimientos y funciones oracle pl/sql (2)
La mayor parte de la información sobre los parámetros del procedimiento almacenado se puede encontrar en ALL_ARGUMENTS y de manera similar en USER_ARGUMENTS
y DBA_ARGUMENTS
Aquí hay una muestra rápida que usa USER_ARGUMENTS
CREATE OR REPLACE PROCEDURE my_proc
(p_number IN NUMBER,
p_varchar IN OUT VARCHAR2 ,
p_clob IN OUT NOCOPY CLOB,
p_timestamp OUT TIMESTAMP
)
IS
BEGIN
NULL;
END;
/
CREATE OR REPLACE FUNCTION my_func
(p_date IN DATE,
p_varchar IN VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
return TRUE;
END;
/
SELECT package_name,object_name, argument_name, IN_OUT , pls_type ,position
FROM user_arguments
WHERE object_name IN (''MY_PROC'',''MY_FUNC'')
ORDER BY package_name, object_name, position;
que da la salida de ..
Procedure created.
Function created.
PACKAGE_NAME OBJECT_NAME ARGUMENT_NAME IN_OUT PLS_TYPE POSITION
--------------------- ------------------------------ ------------------------- --------- -------------------- ----------
MY_FUNC OUT BOOLEAN 0
MY_FUNC P_DATE IN DATE 1
MY_FUNC P_VARCHAR IN VARCHAR2 2
MY_PROC P_NUMBER IN NUMBER 1
MY_PROC P_VARCHAR IN/OUT VARCHAR2 2
MY_PROC P_CLOB IN/OUT CLOB 3
MY_PROC P_TIMESTAMP OUT TIMESTAMP 4
7 rows selected.
Como puede ver, tiene la información más útil ... pero no muestra la sugerencia de NOCOPY. ARGUMENT_NAME que es nulo es el ''valor de retorno'' de la función
la versión ALL_ y DBA_ tendrá una columna OWNER adicional.
Puede encontrar información adicional sobre el procedimiento almacenado en ALL_PROCEDURES , ALL_PLSQL_OBJECT_SETTINGS y ALL_OBJECTS dependiendo del nivel de detalle que esté buscando.
Necesito obtener las definiciones de parámetros de un procedimiento PL / SQL.
En MS SQL, usamos Information_schema.Parameters
; ¿Cuál es la contraparte (si existe) en Oracle?
La mayoría (si no todos) de los mismos datos se puede acceder en Oracle desde la tabla del diccionario de datos ALL_ARGUMENTS . ALL_ARGUMENTS
muestra los argumentos para todos los procedimientos que tiene permiso para ejecutar. USER_ARGUMENTS
muestra los argumentos para todos los procedimientos que posee. Y DBA_ARGUMENTS
muestra los argumentos para todos los procedimientos que existen en la base de datos, pero necesita privilegios adicionales para acceder a las vistas DBA_*
.