Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 试图在视图中设置列类型_Sql_Oracle11g - Fatal编程技术网

Sql 试图在视图中设置列类型

Sql 试图在视图中设置列类型,sql,oracle11g,Sql,Oracle11g,我有一个视图查询 (SELECT CAST(COUNT( *) AS NUMBER(10)) FROM other_table ibl WHERE ibl.fk_id = my_table.id ) AS my_column 但是Oracle仍然将列报告为类型编号,没有大小 这有什么办法吗? 我希望它是第(10)号 db版本是11.2您正在尝试做的应该可以正常工作,所以您的问题一定来自其他地方。下面是我用来测试这个的脚本 CR

我有一个视图查询

(SELECT CAST(COUNT( *) AS NUMBER(10))
    FROM other_table ibl
    WHERE ibl.fk_id = my_table.id
)                           AS my_column
但是Oracle仍然将列报告为类型编号,没有大小

这有什么办法吗? 我希望它是第(10)号


db版本是11.2

您正在尝试做的应该可以正常工作,所以您的问题一定来自其他地方。下面是我用来测试这个的脚本

CREATE Table table1 (no1 NUMBER);
INSERT INTO table1 VALUES(123);
DESC table1;
CREATE VIEW view1 AS
SELECT CAST(no1 AS NUMBER(10)) AS no2 FROM table1;
DESC view1;

看来您刚刚把
演员阵容
放错地方了。您的
CAST
需要包装内联子查询

在本例中,
col2
是当前定义列的方式
col1
显示了需要如何定义它

SQL> ed
Wrote file afiedt.buf

  1  create or replace view vw_foo
  2  as
  3  select cast( (select count(*) from dual) as number(10) ) col1,
  4         (select cast( count(*) as number(10)) from dual) col2
  5*   from dual
SQL> /

View created.

SQL> desc vw_foo
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL1                                               NUMBER(10)
 COL2                                               NUMBER

为什么这很重要?也许你可以解释为什么你需要它是
NUMBER(10)
?我有一个基于列宽进行验证的应用程序,我无法更改它。非常感谢,我在这方面所犯的一个错误是在新列名的from中添加了
as
,导致oracle拒绝了查询。