我需要使用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返回值。
有什么想法吗?
答案 0 :(得分:8)
DESC
是SQL*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');
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');