"No size set for variable length data" Oracle update error with empty string in .NET

From: arvee <nospam_at_spam.not>
Date: Thu, 07 Apr 2005 16:22:34 GMT
Message-ID: <e7d5e.29$1p4.14_at_trndny06>



Hi - I'm updating an Oracle table with an empty string and getting the error:

An unhandled exception of type 'System.Exception' occurred in system.data.dll
Additional information: Parameter 'p1': No size set for variable length data type: String.

The column is nullable and of type varchar2(50). I'm aware that I can store DBNull.Value instead and Oracle won't complain, but, I was hoping to avoid testing and converting for that condition. It seems the .NET class lib should handle empty strings, no? There are times I'd like to throw the dataset into a datagrid control and have the user have there way with it, therefore, its not ideal to have to validate each string value on the update.

Question 1: Is this a bug or am I doing something wrong? Question 2: If its a bug, is there an elegant workaround?

Sample C# code is:

// create typed dataset (basic customer list: name, address, phone, etc.)
CustomerDS dsCustomer = new CustomerDS();

// create data adapter

OracleDataAdapter daCustomers = new OracleDataAdapter("SELECT * FROM Customers", connectionString);

// use command builder to create update, insert and delete commands based on
select
OracleCommandBuilder cb = new OracleCommandBuilder(daCustomers);

// get some data

daCustomers.Fill(dsCustomer.CUSTOMERS)

// delete Middle Name, for example

dsCustomer.CUSTOMERS.Rows[0]["MIDDLE_NAME"] = "";

// store new dataset

daCustomers.Update(dsCustomer, "Customers");

// boom - get error (even though I put it in a try...catch block!)
Received on Thu Apr 07 2005 - 18:22:34 CEST

Original text of this message