0

こんにちは、OCI8 を使用して PHP から直接 Oracle パッケージに関する情報を取得しようとしています。

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

これは次を返します:

警告: oci_execute() [function.oci-execute]: ORA-00900: /oci8_test.php の 16 行目に無効な SQL ステートメントがあります

SQLPlusで試したので、コマンドが機能することはわかっています。

これを達成する方法を知っている人はいますか。

どうも

4

3 に答える 3

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';
于 2009-11-06T15:27:10.287 に答える
2

返信ありがとうございます。答えが見つかったと思います。

Vincent が言ったように、興味のある人は誰でも、それを機能させるには、独自の「DESC」を作成する必要があると思います。使用するOracleビューは「user_arguments」で、関数/プロシージャ名、引数の名前と型、引数の位置などを取得します...

select * from user_arguments where package_name = 'my_package'
于 2009-11-06T15:44:28.967 に答える
1

DESCSQL*PlusコマンドですSQL*PlusDESC任意のツールからデータ ディクショナリにクエリを実行することで、独自のものを作成できます。

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
于 2009-11-06T15:26:14.937 に答える