Retour d'un « paquet DESC » en PHP utilisant OCI
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
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