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拒绝了查询。