2014-06-24 1 views
1

JavaScript를 사용하여 여러 Oracle 뷰에 대한 열 정보를 찾아야합니다. 내가 시도한 것은 :JavaScript를 사용하여 Oracle에서 "DESC TABLE"명령을 실행 하시겠습니까?

var conObj = new ActiveXObject('ADODB.Connection');  
conObj.Open(conString);  
sql = "DESC MyView"; 
rs1 = new ActiveXObject("ADODB.Recordset"); 

var commd = new ActiveXObject('ADODB.Command'); 

commd.ActiveConnection = conObj; // 

commd.CommandText = sql; 

commd.CommandType = 1; 

rs1 = commd.Execute(); 

SQL 문에 대한 오류입니다. SQL Developer에서 SQL이 작동한다는 것을 알고 있습니다.

쿼리를 실행할 필요가있을 때 뷰가 채워지지 않은 빈 행 집합을 반환하는 대체 SELECT 쿼리를 사용할 수 없습니다. DESC 만 값을 리턴합니다.

아이디어가 있으십니까?

+0

이 코드는 어디서 실행해야합니까? 데이터베이스 서버는 어디에 있습니까? – Pointy

+0

'DESC'는'SQL * Plus' 명령입니다. 그래서, 당신은 그것을 사용할 수 없습니다. –

답변

7

DESCSQL*Plus 명령입니다. 그래서 JDBC/ODBC를 통해 사용할 수 없습니다. 대안을 아래에서 이와 같이 지정할 수 있습니다.

select RPAD(COLUMN_NAME,30)||' '||DATA_TYPE||'('||DATA_LENGTH||')' as descr 
FROM all_tab_cols 
    WHERE TABLE_NAME = UPPER('YOUR_TABLE') and owner=UPPER('SCHEMA_NAME'); 

Oracle's Reference

all_tab_cols

테이블 /의 메타 데이터를 포함하는 데이터 사전 표 (도)이다.

예 :

SQL> create view MyView as select * from dual where 1=2; 

View created. 

SQL> select RPAD(COLUMN_NAME,30)||' '||DATA_TYPE||'('||DATA_LENGTH||')' as descr 
    2 FROM all_tab_cols 
    3 WHERE TABLE_NAME ='MYVIEW' and owner='MYSCHEMA'; 


DESCR 
------------------------------------------------ 
DUMMY       VARCHAR2(1) 

데이터 및 DESC

내가 Maheswaran의 질의에 동의
SQL> select * from myview; 

no rows selected 

SQL> desc myview; 

Name  Null? Type 
----------------------------- 
DUMMY    VARCHAR2(1) 
+0

방금 ​​연결을 시도했는데 FROM 위치가 마음에 들지 않았습니다. 나는 시도했다 : sql = "select * from user_tab_cols where table_name = 'mytable'"그러나 다시 비어 온다. –

+0

내가 선택한 별칭은 실제로 예약 된 키워드 였으므로 여기에 있습니다. 시도하십시오. 또한 테이블 이름은 모두 _CAPS_ –

+0

이어야합니다. 별칭 "desc"는 큰 따옴표로 묶을 수 있습니다. 또한 data_length는 NUMBER 유형입니다 (오라클은 이것을 varchar로 암시 적으로 캐스팅합니다). –

0

. 또한 모든 정보를 얻기 위해 아래 쿼리를 시도했습니다. 이를 통해 다른 제약 조건과 특성을 알 수 있습니다.

select * FROM all_tab_cols WHERE TABLE_NAME = UPPER ('TABLE_NAME') 및 소유자 = UPPER ('SCHEMA_NAME');

관련 문제