首页 > 解决方案 > 如何更改 Oracle View 中的列数据类型?

问题描述

我正在尝试通过执行以下语句来更改 Oracle 视图中列的数据类型:

ALTER VIEW <view_name> 
MODIFY (ID VARCHAR2(100));

我收到以下错误:

Error starting at line : 1 in command -
ALTER VIEW <view_name>
MODIFY (ID VARCHAR2(100))
Error report -
ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:

我提到了这里的帖子。实现这一目标的正确方法是什么?我猜 Oracle 期望CONSTRAINT关键字 after MODIFY。我正在修改其数据类型的列是该视图所在的表中的主键之一。

标签: sqloraclesql-view

解决方案


您不能更改 VIEW 的列数据类型。

相反,您可以更改基础基表列的数据类型(在这种情况下,请参阅问题中提到的链接的答案),或者您可以使用该数据类型创建视图查询。

-- Your view
CREATE OR REPLACE VIEW <YOUR VIEW> AS
SELECT ID, 
...
FROM <TABLE>;

您可以更改视图的 SELECT 查询。

CREATE OR REPLACE VIEW <YOUR VIEW> AS
SELECT cast(ID as varchar2(20)) as ID, 
...
FROM <TABLE>;

希望,这会有所帮助。

干杯!!


推荐阅读