Procedimiento almacenado en firebird


Bueno os voy a dejar el código fuente de un procedimiento almacenado que se encarga de grabar los accesos de los usuarios a la aplicación.

Le pasamos tres campos de entrada y con estos datos inserta un registro en la tabla usu_accesos. Los datos de entrada son USUARIO, CLAVE y ERROR. Realiza un insert con el usuario SYSDBA, que es el root de firebird.

Procedimiento almacenado en firebird para grabar los accesos al sistema de gestión de la información

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET TERM ^ ;
CREATE PROCEDURE ACCESSOS_ALTA (
    USUARIO VARCHAR(50),
    CLAVE VARCHAR(50),
    ERROR VARCHAR(100) )
AS
BEGIN
  INSERT INTO usu_accesos (usuario, password ,error) VALUES  (:usuario,:clave ,:error);
  WHEN sqlcode -530 do
    exception error_accesos_alta;
END^
SET TERM ; ^
 
GRANT EXECUTE
 ON PROCEDURE ACCESSOS_ALTA TO  SYSDBA;

Ahora paso a escribir el código fuente en visual basic.net para la llamada al procedimiento almacenado.

Rutina en vb.net para llamar al procedimiento que graba los accesos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    Private Sub GrabarAccesoUsuario(Mensaje As String)
 
        '##############################################################################################################################
        '
        ' Inserta  registros en la tabla ACCESSOS_ALTA desde un procedimiento
        '
        '##############################################################################################################################
        Using FBconn As New FbConnection(ScSYSDBA)
 
            Using FBcmd As New FbCommand("ACCESSOS_ALTA", FBconn)
                Try
                    FBcmd.Connection.Open()
                    FBcmd.CommandType = System.Data.CommandType.StoredProcedure
                    FBcmd.Parameters.Add("@USUARIO", FbDbType.VarChar, 50)
                    FBcmd.Parameters("@USUARIO").Value = txtUsuario.Text
                    FBcmd.Parameters.Add("@CLAVE", FbDbType.VarChar, 50)
                    FBcmd.Parameters("@CLAVE").Value = txtClave.Text
                    FBcmd.Parameters.Add("@ERROR", FbDbType.VarChar, 100)
                    FBcmd.Parameters("@ERROR").Value = GetIPAddress() & Mensaje
 
                    FBcmd.ExecuteNonQuery()
 
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
                FBcmd.Connection.Close()
            End Using
        End Using
    End Sub
' Devuelve la ip del cliente que realiza el acceso al sistema.
    Private Function GetIPAddress() As String
        Dim strmyHost As String = System.Net.Dns.GetHostName
 
        Dim strIPAddress = System.Net.Dns.GetHostEntry(strmyHost).AddressList(0).ToString()
 
        Return strmyHost & " - " & strIPAddress & " - "
    End Function