如何在 Oracle 中更改视图的列大小

Posted

技术标签:

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

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

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

但它的抛出错误

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

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

【问题讨论】:

【参考方案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 个或多个表组成,因此您需要更改所有这些基表的列大小。

【讨论】:

视图中的列可能是一个复杂的表达式,并且可能不会以任何直接的方式映射到基础表列。

以上是关于如何在 Oracle 中更改视图的列大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使用屏幕大小更改 django 模板中的列数

如何在 Oracle Sql Developer 中选择特定的列标题

如何在 FullCalendar DayGrid 视图中更改事件元素的大小?

如何在文本视图中更改单个单词的文本大小和颜色[重复]

如何在 ios 中使用自动布局更改滚动视图内容大小

如何在加载了 nib 文件的 UIView 中调整子视图的大小