Re: Migration to AL32UTF8 from WE8ISO8859P15

  • From: Nigel Thomas <nigel_cl_thomas@xxxxxxxxx>
  • To: lucdemanche@xxxxxxxxx, oracle-l <oracle-l@xxxxxxxxxxxxx>
  • Date: Wed, 10 Jan 2007 07:26:36 -0800 (PST)

Luc


Q1/Q3: If you set the parameter NLS_LENGTH_SEMANTICS=CHAR then any ambiguous 
*new* column/variable definitions will be made long enough for characters 
rather than bytes. That seems a lot easier than changing every single table and 
package definition. 

But existing columns won't be affected, as I recall. You would need to MODIFY 
table/column definitions according (and then recompile affected views, 
dependent packages etc).

You should beware of the possible implications on index key sizes (as the 

VARCHAR2 / NVARCHAR2 declarations in PL/SQL will be fixed as the packages are 
recompiled (mostly this will happen implicitly because of your DDL on the 
underlying tables - but you should check that any packages that aren't 
automatically recompiled are manually recompiled.

Q2: of course Oracle limits SQL types (NOT in PL/SQL) to 4000 bytes - so up to 
1000 * 4 byte chars (of course, most of your characters will occupy just 1 or 2 
bytes - your exact mileage will vary depending on language). You can use CLOB 
instead, and many string functions work directly against 'small' CLOBS - but 
remember that CLOBs also have some drawbacks (LOB space management etc), so 
only convert if you are sure you have to.

HTH

Regards Nigel

Other related posts: