Pregunta

Hola Estoy tratando de obtener información sobre un paquete de Oracle directamente desde PHP usando oci8:

$sql = 'DESC my_package';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);

esto devuelve:

Warning: oci_execute() [function.oci-execute]: ORA-00900: invalid SQL statement in /oci8_test.php on line 16

Sé que el comando funciona como lo probé en SQLPlus.

¿Alguien sabe cómo lograr esto.

Thx

¿Fue útil?

Solución 2

Thx por las respuestas, creo que he encontrado mi respuesta.

Así que para cualquiera que esté interesado, como se dijo Vincent, creo que para que funcione tendrá que crear su propio 'DESC'. El Oracle Ver a utilizar es '' user_arguments, se obtienen los nombres de función / procedimiento, nombres de argumento y tipos, posición argumento, etc ...

Select * from user_arguments where package_name = 'my_package'

Otros consejos

DESC es un comando SQL Plus.

He estado lejos de Oracle durante unos años ahora, pero mira en el diccionario de datos. Por ejemplo para las tablas que podría hacer a continuación. Tiene que haber algo para los paquetes también. DESC MY_TABLE

es equivalente a

SELECT 
column_name "Name", 
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='TABLE_NAME_TO_DESCRIBE';

DESC es un comando SQL*Plus, no va a funcionar fuera de SQL*Plus. Usted puede escribir su propio DESC consultando la dictionnary datos desde cualquier herramienta:

SQL> SELECT column_name, data_type, data_length,
  2         data_precision, data_scale, nullable
  3    FROM all_tab_columns
  4   WHERE table_name = 'T';


COLUMN_NAME  DATA_TYPE  DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE
------------ ---------- ----------- -------------- ---------- --------
COLUMN1      CHAR                 6                           Y
COLUMN2      CHAR                 6                           Y
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top