Oracle nls length semantics: differenze tra le versioni
Jump to navigation
Jump to search
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 14: | Riga 14: | ||
null; |
null; |
||
end; |
end; |
||
end loop; |
|||
end; |
|||
/ |
|||
Variante: |
|||
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 loop; |
||
end; |
end; |
Versione delle 15:44, 21 gen 2020
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 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; /