Frage

Hallo Ich versuche, Informationen auf einem Oracle-Paket direkt von PHP zu bekommen OCI8 mit:

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

diese zurück:

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

Ich kenne den Befehl funktioniert, wie ich es in SQLPlus versucht.

Wer weiß, wie dies zu erreichen.

Thx

War es hilfreich?

Lösung 2

Thx für die Antworten, ich glaube, ich meine Antwort gefunden zu haben.

Also für jeden, der interessiert ist, wie Vincent sagte, ich glaube, es müssen Sie arbeiten zu lassen, um Ihren eigenen ‚DESC‘ erstellen. Die Oracle-Ansicht zu verwenden ist 'user_arguments', können Sie die Funktion / Prozedur-Namen erhalten, Argumentnamen und -typen, Argument Position, etc ...

Select * from user_arguments where package_name = 'my_package'

Andere Tipps

DESC ist ein SQL Plus-Befehl.

Ich bin seit ein paar Jahren von Oracle jetzt weg, aber das Datenwörterbuch suchen. Zum Beispiel für Tabellen können Sie unten tun. Es muss auch etwas für Pakete sein. DESC MY_TABLE

entspricht

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 ein SQL*Plus Befehl ist, wird es nicht von SQL*Plus trainieren. Sie können Ihren eigenen DESC durch Abfrage der Daten Dictionnary von jedem Werkzeug schreiben:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top