使用JavaScript在Oracle中执行“DESC TABLE”命令?

时间:2014-06-24 17:51:06

标签: javascript sql oracle

我需要使用JavaScript查找许多Oracle视图的列信息。我试过的是:

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在SQL Developer中工作。

我无法使用备用SELECT查询,因为它返回一个空行集 - 当我需要运行查询时,不会填充视图。只有DESC返回值。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

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

SQL> select * from myview;

no rows selected

SQL> desc myview;

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

答案 1 :(得分:0)

我同意Maheswaran的询问。另外,我尝试了以下查询来获取所有信息。这让我知道不同的约束和属性。

选择* 来自all_tab_cols   TABLE_NAME = UPPER('TABLE_NAME')和所有者= UPPER('SCHEMA_NAME');