如何更改 Oracle View 中的列数据类型?
How to change a column data type in 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:
我参考了post。实现这一目标的正确方法是什么?我猜 Oracle 在 MODIFY
之后需要 CONSTRAINT
关键字。我正在修改其数据类型的列是此视图所在的 table 中的主键之一。
您不能使用 ALTER 更改视图的列大小。你就是做不到。
如果要更改视图定义,则必须找到原始定义并重写它。
要查找原始定义,请在 USER_VIEWS 中查找 TEXT 或 TEXT_VC 列。然后使用CAST调整感兴趣列的定义。
示例:
SQL> create or replace view V as
2 select dummy from dual;
View V created.
SQL> desc v;
Name Null? Type
DUMMY VARCHAR2(1)
SQL> select text_vc from user_views where view_name = 'V';
TEXT_VC
----------------------
select dummy from dual
SQL> create or replace view V as
2 select cast(dummy as varchar2(100)) dummy from dual;
View V created.
SQL> desc v;
Name Null? Type
DUMMY VARCHAR2(100)
此致,
炖阿什顿
您不能更改 VIEW 的列数据类型。
相反,您可以更改底层基础 table 列的数据类型(在这种情况下,请参考您问题中提到的 link 的答案)或者您可以创建一个视图查询使用该数据类型。
-- 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>;
希望这会有所帮助。
干杯!!
我正在尝试通过执行以下语句更改 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:
我参考了postMODIFY
之后需要 CONSTRAINT
关键字。我正在修改其数据类型的列是此视图所在的 table 中的主键之一。
您不能使用 ALTER 更改视图的列大小。你就是做不到。
如果要更改视图定义,则必须找到原始定义并重写它。
要查找原始定义,请在 USER_VIEWS 中查找 TEXT 或 TEXT_VC 列。然后使用CAST调整感兴趣列的定义。
示例:
SQL> create or replace view V as
2 select dummy from dual;
View V created.
SQL> desc v;
Name Null? Type
DUMMY VARCHAR2(1)
SQL> select text_vc from user_views where view_name = 'V';
TEXT_VC
----------------------
select dummy from dual
SQL> create or replace view V as
2 select cast(dummy as varchar2(100)) dummy from dual;
View V created.
SQL> desc v;
Name Null? Type
DUMMY VARCHAR2(100)
此致,
炖阿什顿
您不能更改 VIEW 的列数据类型。
相反,您可以更改底层基础 table 列的数据类型(在这种情况下,请参考您问题中提到的 link 的答案)或者您可以创建一个视图查询使用该数据类型。
-- 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>;
希望这会有所帮助。
干杯!!