如何在 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 中更改视图的列大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Oracle Sql Developer 中选择特定的列标题