Exceute SP sin parámetro usando Dapper siempre obtenga valor nulo (Dapper + ODBC + Sybase)

dapper odbc sybase

Pregunta

Tengo problemas para ejecutar SP con Dapper usando ODBC Sybase, para el parámetro de entrada no tengo ningún problema, cuando probé el parámetro no funciona como se esperaba.

Original SP tiene una declaración de inserción, así que coloco la instrucción TRANSACTION en el código.

Aquí mi SP modificado:

create proc dbo.SP_TEST_DAPPER(@FIRST_PARM VARCHAR(10),  @ErrorMessages VARCHAR(1000 ) Out  )
AS 

BEGIN 

  declare @Rtn Int  
  declare @TranName  varchar(50)

  SELECT @TranName = 'SP_TEST' 

  BEGIN TRANSACTION @TranName 
  IF @FIRST_PARM = '1'
  BEGIN 
      SELECT @ErrorMessages   = 'OK'  
  END 
  BEGIN 
      SELECT @ErrorMessages   = 'Error'  
      GOTO ERROR_TRAP  
  END 

  COMMIT TRANSACTION @TranName   
  SELECT @ErrorMessages
    ERROR_TRAP:  
    ROLLBACK TRANSACTION @TranName   
  SELECT @ErrorMessages      
END

Mi resultado: enter image description here

Respuesta popular

Su implementación para los parámetros nombrados de ODBC es incorrecta. Encapsula el parámetro nombrado con signos de interrogación en su instrucción y crea el parámetro nombrado sin los signos de interrogación. Los signos de interrogación son utilizados por Dapper para analizar la declaración para encontrar los nombres.

storedProcedureName = "dbo.SP_TEST_DAPPER ?FIRST_PARM?, ?ErrorMessages?";

pX.Add("FIRST_PARM",firstparm);
pX.Add("ErrorMessages", dbType: DbType.String, direction: ParameterDirection.Output, size: 1000);

Consulte esta respuesta para obtener más información: https://stackoverflow.com/a/26484944/6490042



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué