Tengo un problema que me trae loca. Quiero ejecutar una funcion pl sql desde Visual basic, le envio los parametros correctamente pero no se como puedo recoger el valor que devuelve dicha funcion.
Este es el codigo de Visual Basic
Dim CMDSPALTA As ADODB.Command
Dim G As Integer
Sub ALTA_ADMINISTRATIVA() 'Ejecutar funcion para crear la guardia
Set CMDSPALTA = New ADODB.Command
CMDSPALTA.Parameters.Append CMDSPALTA.CreateParameter("@I_VE", adChar, adParamInput, 200, cmbVeterinario.Text)'Parametro de entrada Veterinario
CMDSPALTA.Parameters.Append CMDSPALTA.CreateParameter("@I_CU", adChar, adParamInput, 200, cmbCuidador.Text)'Parametro de entrada Cuidador
CMDSPALTA.Parameters.Append CMDSPALTA.CreateParameter("@I_FECHA", adChar, adParamInput, 200, txtfechaA.Text)'Parametro de entrada Fecha
CMDSPALTA.CommandText = "F_GUARDIA" 'Nombre de la funcion
CMDSPALTA.CommandType = adCmdStoredProc
Set CMDSPALTA.ActiveConnection = con 'Abrir base de datos
G = CMDSPALTA.Execute
msgbox G
End Sub
Y ahora os pongo el codigo de la funcion en plsql
CREATE OR REPLACE function F_GUARDIA (I_VE IN CHAR,I_CU IN CHAR, I_FECHA IN CHAR) RETURN INTEGER IS
D INTEGER;
X_FECHA DATE;
BEGIN
D:=2;
X_FECHA:=TO_DATE(I_FECHA,'DD/MM/YYYY');
IF I_VE IS NOT NULL THEN
INSERT INTO GUARDIAS
(COD_PERSONAL,
FECHA)
SELECT PERSONAL.COD_PERSONAL, x_FECHA
FROM PERSONAL, VETERINARIOS
WHERE PERSONAL.COD_PERSONAL=VETERINARIOS.COD_PERSONAL
AND PERSONAL.APELLIDOS=I_VE;
END IF;
IF I_CU IS NOT NULL THEN
INSERT INTO GUARDIAS
(COD_PERSONAL,
FECHA)
SELECT PERSONAL.COD_PERSONAL,x_FECHA
FROM PERSONAL, CUIDADORES
WHERE PERSONAL.COD_PERSONAL=CUIDADORES.COD_PERSONAL
AND PERSONAL.APELLIDOS=I_CU;
END IF;
COMMIT;
RETURN D;
END;
/
Haber si alguien sabe como recoger el valor que da la funcion.

Muchas Gracias
Un besote
