none
Procedimiento almacena no devuelve valor correcto RRS feed

  • Pregunta

  • Hola:

    Tengo el siguiente procedimiento almacenado:

    ALTER PROCEDURE [dbo].[SP_PGCEmpresaExisteCuenta]
    	-- Add the parameters for the stored procedure here
    	@Cuenta nvarchar(50)	
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
    
        -- Insert statements for procedure here
    	 -- Insert statements for procedure here
    	If(SELECT     COUNT(*)
    		FROM         PGCEmpresa
    		WHERE     (Cuenta = @Cuenta) ) > 0
    Return 1
    else
    Return 0
    END
    

    Cuando lo ejecuto desde Sql Server me devuelve 0 sino lo encuentra y uno si hay uno o más.

    Pero cuando lo ejecuto desde vs me devuelve -1.

    Dim context As New GestionLlaveSQLEntities
            Dim _DigCuenta As Integer = _Cuenta.Length
    
            'Dim int As Integer = context.SP_PGCEmpresaExisteCuenta(tbSubCuenta.Text)
    

    Y en importación de funciones:

    Un Saludo.

    Juan Carlos

    miércoles, 14 de noviembre de 2012 22:48

Respuestas

Todas las respuestas

  • Pero si el procedimiento almacenado devuelve un valor tendrias que seleccionar que devuelve una colección de Escalares Int32(que sera un valor no una colección) para que te devuelva el valor.

    Usando Entity Framework con Procedimientos Almacenados

    Procedimientos almacenados en Entity Framework

    En los ejemplos veras como para los procedimientos que devuelven valores seleccionar Escalares que es lo que tu tienes que hacer.

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador


    • Editado Cristian Torres jueves, 15 de noviembre de 2012 4:20
    • Marcado como respuesta elturle jueves, 15 de noviembre de 2012 21:11
    jueves, 15 de noviembre de 2012 4:19
  • Hola Cristian:

    He seleccinado que devuelva int32 y me da el siguiente error:

    "El lector de datos devuelto por el proveedor de datos de almacenamiento no tiene bastantes columnas para la consulta solicitada."

     ''' <summary>
        ''' No hay documentación de metadatos disponible.
        ''' </summary>
        ''' <param name="cuenta">No hay documentación de metadatos disponible.</param>
        Public Function SP_PGCEmpresaExisteCuenta(cuenta As Global.System.String) As ObjectResult(Of Nullable(Of Global.System.Int32))
            Dim cuentaParameter As ObjectParameter
            If (cuenta IsNot Nothing) Then
                cuentaParameter = New ObjectParameter("Cuenta", cuenta)
            Else
                cuentaParameter = New ObjectParameter("Cuenta", GetType(Global.System.String))
            End If
    
            Return MyBase.ExecuteFunction(Of Nullable(Of Global.System.Int32))("SP_PGCEmpresaExisteCuenta", cuentaParameter)
    
        End Function

    El error lo da en la línea de Return.

    Y la llamada la hago de la siguiente manera:

    Dim int As Integer = CType(context.SP_PGCEmpresaExisteCuenta(tbSubCuenta.Text).SingleOrDefault, Integer)
            

    Un Saludo.

    Juan Carlos

    jueves, 15 de noviembre de 2012 9:14
  • el tema que el Return no se si lo toma como un resultado

    prueba poner en el procedure

    Using Stored Procedures in the Entity Framework with Scalar Return Values

    If(SELECT     COUNT(*)
    		FROM         PGCEmpresa
    		WHERE     (Cuenta = @Cuenta) ) > 0
    SELECT 1
    else
    SELECT 0

    cambia el return por select


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta elturle jueves, 15 de noviembre de 2012 21:10
    jueves, 15 de noviembre de 2012 13:12