We're using 0040 (v 90143) from VB to hit an Oracle 9 database (NLS setting is UTF-8). We use 0040 to build parameterized Insert and/or Update statements in some of our high transaction areas. I've noticed some strange behavior with multi-byte data (Japanese in this case) and a Varchar2 parameter. I have a column that is defined as 50 (char) so my understanding is that it should take up to 50 characters, irrespective of the length of those characters in bytes (I assume Oracle makes the behind-the-scenes width of the column 50 x 3 bytes to handle unicode).
Anyway, I have a string that comes into my VB app with a length greater than 50 so I truncate it and end up with a 50 character string. When I check the byte length of the string it returns a value of 100 so it would appear that each character in my string is 2 bytes in length. Seems innocuous enough, but when I try to assign the value to my input parameter I receive the OIP-04126: Invalid argument value error. I don't think it's strictly a string length issue either since trunctating several more characters still returns the same error.
Has anyone seen similar behavior with 0040 and multi-byte data? Thanks in advance for any information you have.