Oracle nls length semantics: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
Nessun oggetto della modifica
Nessun oggetto della modifica
 
Riga 1: Riga 1:
Questo breve script plsql converte tutte le colonne VARCHAR2 e CHAR da BYTE a CHAR:
Questo breve script plsql converte tutte le colonne VARCHAR2 e CHAR da BYTE a CHAR:

begin
for c1 in (select owner,table_name,column_name,data_type,data_length
from dba_tab_columns where data_type in ('VARCHAR2','CHAR')
and char_used='B' and owner in ('USER1','USER2'))
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;
/

Variante:


begin
begin
for c1 in (select c.owner,c.table_name,c.column_name,c.data_type,c.data_length
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
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'))
where c.data_type in ('VARCHAR2','CHAR') and c.char_used='B' and c.owner in ('TEST'))
loop
loop
begin
begin

Versione attuale delle 15: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;
/