Вопрос

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

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

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

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

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

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

Спасибо

Это было полезно?

Решение 2

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

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

Select * from user_arguments where package_name = 'my_package'

Другие советы

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

Я уже несколько лет не работаю в Oracle, но загляните в словарь данных.Например, для таблиц, которые вы могли бы сделать ниже.Должно быть что-то и для Упаковок.ОПИСАНИЕ 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top