Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Buffer too small

542526Jun 29 2009 — edited Jun 30 2009
Hello

I am running into *"ORA-06502: PL/SQL: numeric or value error: character string buffer too small"* and I managed to get around it by setting oParam.Size to length of command text instead of the parameter itself!?!

The stored proc signature is

CREATE OR REPLACE PROCEDURE spXXXXX (
TestId varchar2,
bAllTestCleared OUT varchar2
)
...

And my code/C# - yes first place I checked is that I have set parameter size of course:

void SomeTest()
{
IDbConnection oConn = null;
IDbCommand oCmd = null;
IDataParameter oParam = null;
IDataParameter oOutParam = null;

string strTestId = null;

object oReturnValRaw = null;

try
{
strTestId = Guid.NewGuid().ToString();
...
oConn = DBUtil.GetDefaultDBConnection();
oConn.Open();

oCmd = oConn.CreateCommand();
oCmd.CommandText = "spXXXXX";
oCmd.CommandType = System.Data.CommandType.StoredProcedure;

oParam = oCmd.CreateParameter();
oParam.Value = strTestId;
oParam.ParameterName = ":TestId";
oParam.DbType = DbType.String;
((OracleParameter) oParam).Size = strTestId.Length; // Also tried doubling the length (i.e. Size = Size *2). Actually, I solved the problem by setting - oParam.Size = oCmd.CommandText.Length - what the hell...? It worked, but I have no idea why!?
oParam.Direction = ParameterDirection.Input;
oCmd.Parameters.Add(oParam);

oOutParam = oCmd.CreateParameter();
oOutParam.ParameterName = ":bAllTestCleared";
oOutParam.DbType = DbType.String; // one character string, either: 'Y' or 'N'
((OracleParameter) oOutParam).Size = 1; // Also tried doubling the length (i.e. Size = Size *2)
oOutParam.Direction = ParameterDirection.Output;
oCmd.Parameters.Add(oOutParam);

oCmd.ExecuteNonQuery();

oReturnValRaw = oOutParam.Value;
...
}
catch (Exception ex)
{
...
} finally {...}
}

Any suggestion? Is this a bug?
3260848

Thanks

----------------------------------------------------------------

My environment:
1. I'm using ODP.NET 11.1.0.7.10 BETA downloaded from
http://www.oracle.com/technology/software/tech/windows/odpnet/index1110710beta.html

The package includes Oracle Data Provider for .NET 2.0 11.1.0.7.10 Beta - from my app.config I have made sure I'm using the correct version by

<qualifyAssembly partialName="Oracle.DataAccess" fullName="Oracle.DataAccess, Version=2.111.7.10, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

2. Database: 11g Express

Edited by: devvvy on Jun 28, 2009 10:03 PM

Edited by: devvvy on Jun 28, 2009 11:48 PM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 28 2009
Added on Jun 29 2009
3 comments
2,386 views