C# – How to configure C# Typed Datasets when calling OracleDataAdapter.Update() on Oracle Stored Procedures

coraclestored-procedures

I am writing a C# Windows Forms application which calls Oracle stored procedures.

I chose to use typed datasets in the application, these correctly populate various datagrids, but I am having trouble when invoking the UpdateCommand or the InsertCommand. I have manually coded these commands because a) I am using Oracle stored procedures and b) I don't trust CommandBuilder 😉

I am using VS2008 and Oracle 9i

I don't have trouble executing stored procedures in SQL Server or Oracle when simply calling them from the .ExecuteNonQuery command; neither do I have problems executing SQL statements directly and updating the database. The problems only arise when executing the changed rows with OracleDataAdapter.Update(). I am specifying the correct set of rows (added, changed etc.)

The main error I am getting (after a lot of experimentation with increasingly simpler SPs finishing with just one int parameter) is "PLS-00306: wrong number or type of arguments in call to 'PROCNAME'"

I have tried prefixing the Oracle parameter both with ':' and without.

Suffice to say I am losing the will to live. Has anyone any more ideas I could try next?

Thanks

Best Answer

Are you using Oracle's ODBC driver, or Microsoft?

Stick with the Oracle driver.

Try using your simple test case with a text parameter instead of an integer. Without seeing your code, it could be that you need to pass in a long int to the procedure. Trying a simple text parameter could verify that the problem is in variable typing.