none
Llamar a una función con parámetros de SQL Server desde VB.NET RRS feed

  • Pregunta

  • Tengo esta función a la cual le mando en la variable "storage" el nombre de la función (almacenada en la base de datos SQL SERVER) y en "L" la lista los parámetros que necesita la función (de SQL SERVER). Tengo un otro código similar para los procedimientos amacenados que sí funciona, pero este no me corre... Necesito su ayuda. Gracias.

    Public Function LlamaFuncion(ByVal storage As String, ByVal L As List(Of Parametro)) As String
            Dim cmd As SqlCommand
            Dim ret As String
            cn.Open()
                cmd = New SqlCommand(storage, cn)
                cmd.CommandType = CommandType.Text
                If L IsNot Nothing Then
                    For Each item As Parametro In L
                        cmd.Parameters.AddWithValue(item.Nombre, item.Valor)
                    Next
                End If
                ret = cmd.ExecuteScalar()
            cn.Close()
            Return ret
        End Function

    • Cambiado Enrique M. Montejo domingo, 21 de mayo de 2017 5:30 Pregunta relacionada con el acceso a datos con SQL Server.
    lunes, 15 de mayo de 2017 23:57

Respuestas

  • Hola 

    En este link han resuelto algo similar 

    Exec Function del sql desde vb.net


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Marcado como respuesta Ivancho_ miércoles, 5 de julio de 2017 10:08
    jueves, 15 de junio de 2017 3:49
  • Tengo [...] el nombre de la función [...] otro código similar para los procedimientos amacenados que sí funciona, pero este no me corre

    Una diferencia entre los procedimientos y las funciones es que con los procedimientos el esquema es opcional, pero con las funciones es obligatorio, de lo contrario no funcionan. En otras palabras, asegúrate de que en "storage" pone "dbo.NombreDeLaFuncion" en lugar de solamente "NombreDeLaFuncion".

    Y otra cosa, si lo estás llamando como "CommandType.Text" entonces hay que poner completo el texto de la llamada a la función, es decir, en el CommandText al final tiene que poner "dbo.LaFuncion(@nombre de cada parametro)", no basta con que contenga el nombre de la función.

    • Marcado como respuesta Ivancho_ miércoles, 5 de julio de 2017 10:08
    jueves, 15 de junio de 2017 6:17

Todas las respuestas

  • Hola 

    En este link han resuelto algo similar 

    Exec Function del sql desde vb.net


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Marcado como respuesta Ivancho_ miércoles, 5 de julio de 2017 10:08
    jueves, 15 de junio de 2017 3:49
  • Tengo [...] el nombre de la función [...] otro código similar para los procedimientos amacenados que sí funciona, pero este no me corre

    Una diferencia entre los procedimientos y las funciones es que con los procedimientos el esquema es opcional, pero con las funciones es obligatorio, de lo contrario no funcionan. En otras palabras, asegúrate de que en "storage" pone "dbo.NombreDeLaFuncion" en lugar de solamente "NombreDeLaFuncion".

    Y otra cosa, si lo estás llamando como "CommandType.Text" entonces hay que poner completo el texto de la llamada a la función, es decir, en el CommandText al final tiene que poner "dbo.LaFuncion(@nombre de cada parametro)", no basta con que contenga el nombre de la función.

    • Marcado como respuesta Ivancho_ miércoles, 5 de julio de 2017 10:08
    jueves, 15 de junio de 2017 6:17