您好我正在尝试使用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
答案 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