После изменения таблицы представление получает НЕВЕРНОЕ состояние, вы должны либо recompile the view, либо просто выбрать из представления, чтобы снова ввести его в действие и иметь правильное определение. Хотя представление недействительно, оно сохраняет старое определение, которое вы видите.
Ниже немного иллюстрации
create table tab
(col1 varchar2(50));
create or replace view vtab as select col1 from tab;
select table_name, data_length from user_tab_columns where column_name = 'COL1';
TABLE_NAME DATA_LENGTH
---------- -----------
TAB 50
VTAB 50
alter table tab modify (col1 varchar2(100));
select table_name, data_length from user_tab_columns where column_name = 'COL1';
TABLE_NAME DATA_LENGTH
---------- -----------
TAB 100
VTAB 50
select status from user_objects where object_name = 'VTAB';
STATUS
-------
INVALID
мнение является недействительным, поэтому длина колонки неправильно. Скомпилировать представление или простой выпуск select * from VTAB
alter view vtab compile;
select table_name, data_length from user_tab_columns where column_name = 'COL1';
TABLE_NAME DATA_LENGTH
---------- -----------
TAB 100
VTAB 100
Как вы определяете, что длина не меняется? У меня нет этой проблемы. – sstan
Вид основан только на базовой таблице, поэтому, когда у вас будет строка длиной не более 50 символов, вы увидите это и в представлении. VARCHAR2 - это тип данных переменной длины, поэтому увеличение размера не увеличивает длину существующей строки. ** Возможно, вам просто нужно щелкнуть правой кнопкой мыши на 'VIEWS' в' connection' в SQL Developer и нажать «refresh». ** –
Обновить вашу базу данных. – MaxPD