我一直在研究如何在不使用“DESCRIBE table/view;”的情况下描述 TABLES 和 VIEWS;条款。我发现它可以使用以下方法解决:
SELECT column_name, data_type, data_length, data_precision, data_scale, nullable
FROM all_tab_columns
WHERE table_name = 'TABLE'
Run Code Online (Sandbox Code Playgroud)
这在像 PHP 这样的计算机语言中是完全可编程的,但我没有找到“DESCRIBE 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;
Run Code Online (Sandbox Code Playgroud)
但它没有用:(。抛出以下错误:
ORA-00900:sentencia SQL 无效 ORA-06512:en línea 12
当像这样修改“x”变量时:
x := 'BEGIN DESCRIBE '||item.OBJECT_NAME||'; END;';
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR en línea 1: ORA-06550: …