Retornar um 'pacote DESC' em PHP usando OCI
Pergunta
Oi Eu estou tentando obter informações sobre um pacote Oracle diretamente do PHP usando OCI8:
$sql = 'DESC my_package'; $stmt = oci_parse($conn, $sql); oci_execute($stmt);
Este retornos:
Warning: oci_execute() [function.oci-execute]: ORA-00900: invalid SQL statement in /oci8_test.php on line 16
Eu sei o comando funciona como eu tentei em SQLPlus.
Alguém sabe como conseguir isso.
Thx
Solução 2
Thx para as respostas, eu acho que encontrei a minha resposta.
Assim, para quem está interessado, como disse Vincent, eu acho que para fazê-lo funcionar você terá que criar o seu próprio 'DESC'. The Oracle Vista para uso é 'user_arguments', você obtém os nomes função / procedimento, nomes de argumentos e tipos, posição do argumento, etc ...
Select * from user_arguments where package_name = 'my_package'
Outras dicas
DESC é um comando SQL Plus.
Eu estive longe da Oracle para alguns anos agora, mas olhar para o dicionário de dados. Por exemplo, para tabelas que você poderia fazer a seguir. Deve haver algo de pacotes também. DESC MINHA_TABELA
é equivalente a
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
é um comando SQL*Plus
, não vai funcionar fora do SQL*Plus
. Você pode escrever seu próprio DESC
consultando o Dictionnary dados a partir de qualquer ferramenta:
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