Ora-06502 PL/SQL Data string buffer to small
533870Sep 14 2006 — edited Sep 15 2006Hi everyone, I did a Stored procedure on oracle 10.2.0.1 and I wan to call it from visual studio 2005 but every time I called it give me the following error:
Oracle.DataAccess.Client.OracleException ORA-06502: PL/SQL: error : buffer de cadenas de caracteres demasiado pequeño numérico o de valor
ORA-06512: en "TESO.PACK_GEN_REC_EVENTO", línea 49
ORA-06502: PL/SQL: error : buffer de cadenas de caracteres demasiado pequeño numérico o de valor
ORA-06512: en "TESO.PACK_GEN_REC_EVENTO", línea 168
ORA-06502: PL/SQL: error numérico o de valor
ORA-06512: en línea 1 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at BusinessComponent.ComponenteLogico.Generar_Recibo_Usuario_General(String sCadCon, String sApePat, String sApeMat, String sNom, String& sCodigo, String sConGen, String sAno, String sSem) in E:\Alfredo\Proyectos en NET\Recibos-Convencion\BusinessComponent\BusinessComponent\ComponenteLogico.vb:line 146
It seems tnat the int32 parameters is causing conflicts, I'm attaching my stored procedure and the part of te program which call it
PROCEDURE GEN_REC_USU_GEN
(APEPAT IN VARCHAR2,
APEMAT IN VARCHAR2,
NOM IN VARCHAR2,
CODCLI IN OUT VARCHAR2,
PARCONGEN IN VARCHAR2,
PARANO IN VARCHAR2,
PARSEM IN VARCHAR2,
PARNUMREC IN OUT VARCHAR2,
PARCODERR IN OUT NUMBER,
PARMSGERR IN OUT VARCHAR2
) IS
MI_ERROR EXCEPTION;
NCODERR NUMBER;
BEGIN
TESO.PACK_GEN_REC_EVENTO.REG_ALU_GEN(APEPAT,APEMAT,NOM,CODCLI,PARANO,PARSEM,PARCODERR,PARMSGERR);
IF PARCODERR!=0 THEN
NCODERR:=1;
RAISE MI_ERROR;
END IF;
TESO.PACK_GEN_REC_EVENTO.GEN_REC_ALU('09','00',CODCLI,PARCONGEN,PARANO,PARSEM,PARNUMREC,PARCODERR,PARMSGERR);
IF PARCODERR!=0 THEN
NCODERR:=2;
RAISE MI_ERROR;
END IF;
PARCODERR:=0;
EXCEPTION
WHEN MI_ERROR THEN
IF NCODERR=1 THEN
PARMSGERR:='ERROR AL REGISTRAR ALUMNO DE PUBLICO GENERAL: '||PARMSGERR;
ELSIF NCODERR=2 THEN
PARMSGERR:='ERROR AL GENERAR EL RECIBO: '||PARMSGERR;
END IF;
ROLLBACK;
WHEN OTHERS THEN
PARCODERR:=SQLCODE;
PARMSGERR:=SQLERRM;
ROLLBACK;
END GEN_REC_USU_GEN;
/*** net program ****/
Dim OraCon As New OracleConnection(sCadCon)
Dim nCodError As Integer = 0
Dim sStoredProcedure As String = "BEGIN TESO.PACK_GEN_REC_EVENTO.GEN_REC_USU_GEN(:param1,:param2,:param3,:param4,:param5,:param6,:param7,:param8,:param9,:param10); END;"
Dim OraCom As New OracleCommand(sStoredProcedure, OraCon)
'Definiendo parámetros de entrada
Dim param1 As New OracleParameter
Dim param2 As New OracleParameter
Dim param3 As New OracleParameter
Dim param4 As New OracleParameter
Dim param5 As New OracleParameter
Dim param6 As New OracleParameter
Dim param7 As New OracleParameter
Dim param8 As New OracleParameter
Dim param9 As New OracleParameter
Dim param10 As New OracleParameter
param1 = OraCom.Parameters.Add("param1", OracleDbType.Varchar2)
param2 = OraCom.Parameters.Add("param2", OracleDbType.Varchar2)
param3 = OraCom.Parameters.Add("param3", OracleDbType.Varchar2)
param4 = OraCom.Parameters.Add("param4", OracleDbType.Varchar2)
param5 = OraCom.Parameters.Add("param5", OracleDbType.Varchar2)
param6 = OraCom.Parameters.Add("param6", OracleDbType.Varchar2)
param7 = OraCom.Parameters.Add("param7", OracleDbType.Varchar2)
param8 = OraCom.Parameters.Add("param8", OracleDbType.Varchar2)
param9 = OraCom.Parameters.Add("param9", OracleDbType.Int32)
param10 = OraCom.Parameters.Add("param10", OracleDbType.Varchar2)
param1.Direction = ParameterDirection.Input
param2.Direction = ParameterDirection.Input
param3.Direction = ParameterDirection.Input
param4.Direction = ParameterDirection.InputOutput
param5.Direction = ParameterDirection.Input
param6.Direction = ParameterDirection.Input
param7.Direction = ParameterDirection.Input
param8.Direction = ParameterDirection.InputOutput
param9.Direction = ParameterDirection.InputOutput
param10.Direction = ParameterDirection.InputOutput
param1.Value = sApePat
param2.Value = sApeMat
param3.Value = sNom
param4.Value = sCodigo
param5.Value = sConGen
param6.Value = sAno
param7.Value = sSem
param8.Value = Nothing
param9.Value = 0
param10.Value = Nothing
Try
OraCon.Open()
OraCom.ExecuteNonQuery()
OraCon.Close()
Catch ex As Exception
sMenError = param10.Value + " " + ex.ToString
OraCon.Close()
End Try
can anyone give a hint?
Regards
Alfredo Monasi