我一直在研究如何在不使用'DESCRIBE table/view'的情况下描述TABLES和VIEWS。条款。我发现,它可以使用类似解决:如何在不使用DESCRIBE子句的情况下描述ORACLE包?
SELECT column_name, data_type, data_length, data_precision, data_scale, nullable
FROM all_tab_columns
WHERE table_name = 'TABLE'
这是一种计算机语言如PHP完全可编程的,但我没有发现“描述PACKAGE_NAME”子句的解决方法。
我有以下想法(但在SQL * PLUS与阀芯):
DECLARE
x VARCHAR2(50);
CURSOR cursorPaquetes IS
SELECT DISTINCT OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'SATURN';
BEGIN
FOR item IN cursorPaquetes LOOP
x := 'DESCRIBE '||item.OBJECT_NAME||';';
EXECUTE IMMEDIATE x;
END LOOP;
END;
但它没有工作:(抛出以下错误:
ORA-00900: sentencia SQL no válida ORA-06512: en línea 12
当修改这样的变量 'x':
x := 'BEGIN DESCRIBE '||item.OBJECT_NAME||'; END;';
我得到以下错误:
ERROR en línea 1: ORA-06550: línea 1, columna 16: PLS-00103: Encountered the symbol "BVGKFDCS" when expecting one of the following: := . (@ % ; The symbol ":=" was substituted for "BVGKFDCS" to continue. ORA-06512: en línea 12
其中“BVGKFDCS”是我的模式的一个包的名称。
在此先感谢。
P.D.我想类似的东西(而每个包装):
DESCRIBE BVGKFDCS;
PROCEDURE P_GETPROFESSORS
Nombre de Argumento Tipo E/S ¿Por Defecto?
------------------------------ ----------------------- ------ --------
P_CAMP_IN VARCHAR2 IN
P_COLL_IN VARCHAR2 IN
P_DEPT_IN VARCHAR2 IN
P_TERM_IN VARCHAR2 IN
PROCEDURE P_GETTERMSBYPROF
Nombre de Argumento Tipo E/S ¿Por Defecto?
------------------------------ ----------------------- ------ --------
NAME_ARRAY TABLE OF VARCHAR2(32000) IN
VALUE_ARRAY TABLE OF VARCHAR2(32000) IN
PROCEDURE P_INIT
Nombre de Argumento Tipo E/S ¿Por Defecto?
------------------------------ ----------------------- ------ --------
PIDM VARCHAR2 IN
PROCEDURE P_OBTENER_VALOR
Nombre de Argumento Tipo E/S ¿Por Defecto?
------------------------------ ----------------------- ------ --------
注意,这个输出是不同的:
select * from user_source
的可能重复[查询搜索所有包表和/或列(http://stackoverflow.com/questions/ 4852993/query-to-search-all-packages-for-table-and-or-column) –
嗨,感谢您的重播。不,这不是重复的,因为DESCRIBE子句描述了这个包中所有过程的参数。 – akolmogorov
'DESCRIBE'或'DESC'不是一个子句。这是一个SQL * Plus命令。 –