Oracle nls length semantics: differenze tra le versioni

Da Emigar.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 2: Riga 2:


begin
begin
for c1 in (select owner,table_name,column_name,data_type,data_length
for c1 in (select c.owner,c.table_name,c.column_name,c.data_type,c.data_length
from dba_tab_columns where data_type in ('VARCHAR2','CHAR')
from dba_tab_columns c inner join dba_tables t on t.owner=c.owner and t.table_name=c.table_name
and char_used='B' and owner in ('USER1','USER2'))
where c.data_type in ('VARCHAR2','CHAR') and c.char_used='B' and c.owner in ('TEST'))
loop
loop
begin
begin
execute immediate 'alter table ' || c1.owner || '.' || c1.table_name || ' modify ' ||
execute immediate 'alter table ' || c1.owner || '.' || c1.table_name || ' modify ' || c1.column_name || ' ' || c1.data_type || '(' || c1.data_length || ' char)';
exception
c1.column_name || ' ' || c1.data_type || '( ' || c1.data_length || ' char)';
exception
when others
when others
then
then
null;
null;
end;
end;
end loop;
end loop;
end;
end;

Versione attuale delle 13:46, 21 gen 2020

Questo breve script plsql converte tutte le colonne VARCHAR2 e CHAR da BYTE a CHAR:

begin
 for c1 in (select c.owner,c.table_name,c.column_name,c.data_type,c.data_length
              from dba_tab_columns c inner join dba_tables t on t.owner=c.owner and t.table_name=c.table_name
             where c.data_type in ('VARCHAR2','CHAR') and c.char_used='B' and c.owner in ('TEST'))
 loop
   begin
   execute immediate 'alter table ' || c1.owner || '.' || c1.table_name || ' modify ' || c1.column_name || ' ' || c1.data_type || '(' || c1.data_length || ' char)';
   exception
     when others
         then
             null;
   end;
 end loop;
end;
/