Problema con llamada a un procedimiento Almacenado

Tengo una palicacion en VB6 contra Oracle 9i la cual interactúa sin problemas pero en un procedimiento determinado me da un error (me dice que no encuentra un dato que debe recuperar, ya que lo inserto previamente en la misma llamada al procedimiento). Entonces para comprobarlo lo depuro directamente en oracle y no me da ningún error. Sabéis que le puede pasar en Visual Gracias

1 respuesta

Respuesta
1
¿Estás utilizando una función o bien un procedure?
Mira, esta es la funcion donde llamo al procedure
Public Sub loadMails()
Dim strRaw As String
Dim i As Long
Dim lCount, lPos As Long
Dim strSubject, strMsgId, strDate As String
Dim Item As MSComctlLib.ListItem
Dim curDateTime, maxDateTime, minDateTime As Date
Dim strFileName As String
Dim nIndex As Integer
Dim mail As String
Dim subject As String
Dim Texto As String
Dim texto1 As String
Dim texto2 As String
Dim texto3 As String
Dim buzon As String
Dim IncidenciaId As Long
Dim NumAttach As Long
Dim a As Long
Dim name As String
Dim ACount As Long
Dim Pakete As String
Dim retardo As Long
Dim cmdmail As New ADODB.Command
Dim res As Long
Error_ON = False
If vbVersionId = 13 Then
Pakete = "IT_ALTA_X_MAIL_PKG.IT_ALTA_X_MAIL"
Else
Pakete = "IT_ALTA_X_MAIL12_PKG.IT_ALTA_X_MAIL12"
End If
sBar.SimpleText = "Loading emails...."
lCount = g_oStore.GetEmailCount(SZ_INBOX) 'get email total count in mailbox "Inbox"
lsvMails.ListItems.Clear
For i = 0 To lCount - 1
strMsgId = g_oStore.GetEmailId(SZ_INBOX, i)
strFileName = g_oStore.GetEmailFileName(SZ_INBOX, strMsgId)
m_oMsg.RawContent = g_oStore.GetEmail(SZ_INBOX, i)
strSubject = m_oMsg.GetSubject()
strMsgId = g_oStore.GetEmailId(SZ_INBOX, i)
'''''''''''''''''''''''''''''''''''''''''''
mail = m_oMsg.GetFromAddress
subject = m_oMsg.GetSubject
Texto = m_oMsg.GetAltBody
If Len(Texto) > 4000 Then
texto1 = Mid(Texto, 1, 4000)
Texto = Mid(Texto, 4000)
If Len(Texto) > 4000 Then
texto2 = Mid(Texto, 1, 4000)
Texto = Mid(Texto, 4000)
If Len(Texto) > 4000 Then
texto3 = Mid(Texto, 1, 4000)
Else
texto3 = Texto
End If
Else
texto2 = Texto
texto3 = ""
End If
Else
texto1 = Texto
texto2 = ""
texto3 = ""
End If
buzon = Frmpop3.txtServer.Text
ACount = m_oMsg.GetAttachmentCount() 'Getting total count of attachments
If ACount > 0 Then
attach = 1
Else
attach = 0
End If
Escribir_Log ".- Mail Recibido de: " & mail, 2
With cmdmail
.ActiveConnection = Conn
.CommandText = Pakete
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("mail", adVarChar, adParamInput, 100, mail)
.Parameters.Append .CreateParameter("subject", adVarChar, adParamInput, 100, subject)
.Parameters.Append .CreateParameter("texto1", adVarChar, adParamInput, 4000, texto1)
.Parameters.Append .CreateParameter("texto2", adVarChar, adParamInput, 4000, texto2)
.Parameters.Append .CreateParameter("texto3", adVarChar, adParamInput, 4000, texto3)
.Parameters.Append .CreateParameter("attach", adVarChar, adParamInput, 50, attach)
.Parameters.Append .CreateParameter("buzon", adVarChar, adParamInput, 100, buzon)
.Parameters.Append .CreateParameter("IncidenciaId", adNumeric, adParamOutput, 38)
.Parameters.Append .CreateParameter("ErrCode", adNumeric, adParamOutput, 38)
'Ejecuta el Procedimiento
For retardo = 1 To 100: Next retardo
.Execute
End With
If cmdmail("ErrCode") > 0 Then
Error_ON = True 'ErrResult = Mensaje(cmdmail("ErrCode"), False, False, "", "")
Else
IncidenciaId = cmdmail("IncidenciaId")
For a = 1 To ACount
'guardar los attach
name = m_oMsg.GetAttachmentName(a)
m_oMsg.SaveAttachmentAs RutaMail & name, a
Agregar_Documento IncidenciaId, RutaMail & name, "INC"
'Dialog.List1.AddItem g_POPMSG.GetAttachmentName(i) 'Getting file name of specified attachment
Next
res = Enviar_mail(mail, txtSalida.Text, txtUser.Text, txtPass.Text, TxtApariencia.Text)
g_oStore.DeleteEmail SZ_INBOX, i
End If
Set cmdmail = Nothing
m_nItemIndex = UnselectedIndex
End Sub
Luego dentro del procedure llamoa a otros procedures y es donde me casca. Pero comente solo me casca si lo lanzo desde visual no desde el propio depurador de Oracle
Un saludo
¿Qué error te está dando Oracle?
Pues me dice que no encuentra datos. No se si es que como dentro del procedimiento que te comento llamo a otros procedimientos y es como si no viese una sesión a otra (inserta un registro en una tabla y luego lo consulta, que es donde me da el error) pero solo cuando lo ejecuto desde visual
¿Has probado de comitar explícitamente después de hacer la llamada?
No serviría de nada, ya que cuando hago la llamada, ya me devuelve el error, ademas lo de hacer commit lo realice cada pocos procesos dentro del procedimiento y sigue igual
Siento mucho la tardanza, pero es que he estado acabando una aplicación sobre PL/SQL y VB y he estado muy atareado.
Lo tienes ya acabado, en caso contrario, ¿qué excepción te da oracle?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas