Question

Salut, je suis en train d'obtenir des informations sur un package Oracle directement à partir de PHP en utilisant OCI8:

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

retourne:

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

Je sais que la commande fonctionne comme je l'ai essayé dans SQLPlus.

Quelqu'un sait comment y parvenir.

Thx

Était-ce utile?

La solution 2

Thx pour les réponses, je pense que j'ai trouvé ma réponse.

Donc, pour tous ceux qui veulent, comme Vincent dit, je pense que pour le faire fonctionner, vous devrez créer votre propre DESC. Oracle View à utiliser est 'user_arguments', vous obtenez les noms fonctions / procédures, noms d'arguments et types, position argument, etc ...

Select * from user_arguments where package_name = 'my_package'

Autres conseils

est un SQL DESC plus commande.

Je suis loin d'Oracle depuis quelques années maintenant, mais regardez dans le dictionnaire de données. Par exemple pour les tables, vous pouvez le faire ci-dessous. Il doit y avoir quelque chose pour paquets. MA_TABLE DESC

est équivalent à

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 est une commande SQL*Plus, il ne fonctionnera pas sur SQL*Plus. Vous pouvez écrire votre propre DESC en interrogeant les données à partir de Dictionnary un outil:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top