Вернуть "пакет DESC" в PHP, используя OCI

Привет, я пытаюсь получить информацию о пакете Oracle напрямую из PHP, используя OCI8:

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

это возвращает:

Предупреждение: oci_execute() [function.oci-execute]: ORA-00900: недопустимый оператор SQL в /oci8_test.php в строке 16

Я знаю, что команда работает, как я пытался в SQLPlus.

Кто-нибудь знает, как этого добиться.

Спасибо

3 ответа

Решение

Спасибо за ответы, я думаю, что нашел свой ответ.

Так что для тех, кто заинтересован, как сказал Винсент, я думаю, чтобы заставить его работать, вам придется создать свой собственный "DESC". Oracle View для использования это "user_arguments", вы получаете имена функций / процедур, имена и типы аргументов, положение аргументов и т. Д.

Выберите * из пользовательских аргументов, где имя_пакета = 'my_package'

DESC - это команда SQL Plus.

Я был вдали от Oracle уже несколько лет, но загляни в словарь данных. Например, для таблиц вы можете сделать ниже. Там должно быть что-то для пакетов, а также. DESC MY_TABLE

эквивалентно

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 это SQL*Plus команда, это не сработает из SQL*Plus, Вы можете написать свой собственный DESC путем запроса словаря данных из любого инструмента:

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
Другие вопросы по тегам