【发布时间】:2013-08-15 15:23:36
【问题描述】:
给定一个像这样的表:
CREATE TABLE "MyTable"
(
"MyColumn" NUMBER NOT NULL
);
我想创建一个类似的视图:
CREATE VIEW "MyView" AS
SELECT
CAST("MyColumn" AS BINARY_DOUBLE) AS "MyColumn"
FROM "MyTable";
仅当列“MyColumn”为“NOT NULL”时。
在 SQL Server 中,这非常简单:
CREATE VIEW [MyView] AS
SELECT
ISNULL(CAST([MyColumn] AS Float), 0.0) AS [MyColumn]
FROM [MyTable];
但是,Oracle 等效项会导致“NULL”列:
CREATE VIEW "MyView" AS
SELECT
NVL(CAST("MyColumn" AS BINARY_DOUBLE), 0.0) AS "MyColumn"
FROM "MyTable";
是否有强制 Oracle 在元数据中将视图的列标记为“NOT NULL”?
【问题讨论】:
-
在 DBA.SE 中交叉发布:dba.stackexchange.com/questions/19484/…
-
在这种情况下,如果基础表列具有非空约束,则视图中的列不能为空。你想让
desc "MyView"(希望你不是真的使用大小写混合的对象名称!)也将其显示为非空吗? -
是的,我想将元数据显示为非空。 (不,这些不是真正的命名约定。)
-
这必须在 Oracle 10g 和 11g 上工作(有两个版本的数据库)。
标签: oracle casting oracle10g sql-view