문제

안녕하세요 저는 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에서 시도한대로 명령이 작동한다는 것을 알고 있습니다.

누구든지 이것을 달성하는 방법을 알고 있습니까?

고마워

도움이 되었습니까?

해결책 2

대답을 위해 thx, 나는 내 대답을 찾았다 고 생각합니다.

Vincent가 말했듯이 관심이있는 사람이라면 누구나 작동하게 만들려면 자신의 'Desc'를 만들어야한다고 생각합니다. 사용하는 Oracle보기는 'user_arguments'이며 함수/절차 이름, 인수 이름 및 유형, 인수 위치 등을 얻습니다.

Select * from user_arguments where package_name = 'my_package'

다른 팁

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

DESC a SQL*Plus 명령, 그것은 작동하지 않습니다 SQL*Plus. 직접 쓸 수 있습니다 DESC 모든 도구에서 Data DictionNary를 쿼리하여 :

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top