使用OCI在PHP中返回'DESC包'

时间:2009-11-06 15:13:53

标签: php sql oracle oci8 ora-00900

您好我正在尝试使用OCI8直接从PHP获取有关Oracle软件包的信息:

$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中尝试时起作用。

有谁知道如何实现这一目标。

THX

3 个答案:

答案 0 :(得分:3)

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';

答案 1 :(得分:2)

回复的答案,我想我找到了答案。

所以对于任何有兴趣的人,正如文森特所说,我认为要让它发挥作用,你必须创建自己的'DESC'。 要使用的Oracle View是'user_arguments',您可以获得函数/过程名称,参数名称和类型,参数位置等等。

Select * from user_arguments where package_name = 'my_package'

答案 2 :(得分:1)

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