【问题标题】:How to alter column size of a view in Oracle如何在 Oracle 中更改视图的列大小
【发布时间】:2018-09-05 16:50:36
【问题描述】:

我正在尝试使用我们用于表的相同命令来更改视图的列大小,例如:

alter table 
STUDENT
modify (
    ROLL_NO VARCHAR2(80)
);

但它的抛出错误

SQL 错误:ORA-00942:表或视图不存在

那么我们如何改变视图的列大小呢?

【问题讨论】:

    标签: sql oracle view alter column-sizing


    【解决方案1】:

    视图只是保存查询并从基础基表“继承”列类型。因此,如果您需要更改元数据,您应该更改视图定义:

    ALTER VIEW view_students
    AS
    SELECT CAST(roll_no AS VARCHAR2(80)) AS roll_no,
         ...
    FROM tab_students;
    

    如果你想改变数据类型来存储更长的字符串,那么你需要找到基表并改变它:

    ALTER VIEW tab_students
    MODIFY (ROLL_NO VARCHAR2(80));
    

    【讨论】:

    • 但我将如何获得该视图的表名?我们首先需要该视图的基表名称,对吗?
    • @Danish 请描述你想要达到的目标。如果你想扩展字段来存储更长的字符串,那么是的,你需要定位基表和改变表而不是视图
    • 是的,M 增加列大小。
    【解决方案2】:

    这是我遵循的程序:

    1- 首先通过运行以下查询找到该视图的基表

    SELECT * FROM DBA_DEPENDENCIES
    WHERE OWNER = '<scheman_name>'
    AND NAME = '<view_name>'
    AND TYPE = 'VIEW';
    

    2- 上面的查询将为您提供一个表,您可以在其中找到列名“REFERENCED_NAME”下的基表。

    3- 现在更改该基表的列大小。

    注意:视图可以由 1 个或多个表组成,因此您需要更改所有这些基表的列大小。

    【讨论】:

    • 视图中的列可能是一个复杂的表达式,并且可能不会以任何直接的方式映射到基础表列。
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多