La llamada de C# OdbcDataReader al proceso almacenado con parámetros no devuelve datos

Creo que hay algo trivial que estoy pasando por alto con este problema, estoy llamando a un proceso almacenado, sé que la llamada se realiza como puedo verla en el generador de perfiles, y cuando ejecuto el proceso almacenado desde el analizador de consultas, devuelve registros Como era la intención. El problema es que cuando lo llamo desde el código C#, la ejecución está ocurriendo pero no se obtienen resultados.

Lo que mi depuración ha revelado es que si tengo un código como si OBJECT_ID ('tempdb..##base') NO ES NULL drop table ##base en el procedimiento almacenado, no devolvería ningún dato usando OdbcDataReader, de lo contrario lo haría datos de retorno, ¿alguien puede decirme por qué es esto?

Muchas Gracias

preguntado el 12 de junio de 12 a las 22:06

Proporcione un ejemplo de código. No podemos decirle lo que está mal si no nos muestra lo que está haciendo. -

1 Respuestas

Tenga en cuenta que los resultados devueltos a .NET son los de la instrucción LAST que emitió un SELECT en el procedimiento. Si la consulta OBJECT_ID es DESPUÉS de la declaración SELECT que desea devolver datos, entonces probablemente no obtendrá resultados.

Sin embargo, necesitaría ver sus procedimientos almacenados para asegurarlo.

SET QUOTED_IDENTIFIER ON 
GO

SET ANSI_NULLS ON 
GO

ALTER         PROCEDURE dbo.proc_myStoredProc
AS

if OBJECT_ID ('tempdb..##base') IS NOT NULL drop table ##base
SELECT * FROM mytable
GO

SET QUOTED_IDENTIFIER OFF 
GO

SET ANSI_NULLS ON 
GO

Si elimino la declaración de la tabla desplegable anterior, obtengo los datos; de lo contrario, no

CÓMO COMPROBAR Y DESCARGAR UNA TABLA TEMPERATURA

http://blog.sqlauthority.com/2009/05/17/sql-server-how-to-drop-temp-table-check-existence-of-temp-table/

Respondido el 12 de junio de 12 a las 23:06

No hay mucho en SP Aquí está el código SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROCEDURE dbo.proc_myStoredProc COMO si OBJECT_ID ('tempdb..##base') NO ES NULL drop table ##base SELECT * FROM mytable GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO Si elimino la declaración de la tabla desplegable anterior, obtengo los datos; de lo contrario, no - user1063108

¿Está seguro de que la declaración DROP TABLE no arroja un error y el procedimiento simplemente falla? Eso explicaría por qué no obtienes resultados. Nunca antes había visto una tabla temporal a la que se accediera con dos signos de libra. No significa que no pueda funcionar, simplemente nunca lo he visto. - mike perrenoud

En otras palabras, creo que si sueltas el ## y reemplazarlo con # estarás listo para irte. - mike perrenoud

Sí, estoy seguro de que la tabla desplegable no arroja ningún error, ya que puedo ejecutar el sp a través del analizador de consultas sin problemas y devuelve los datos correctos. Eliminé ## y lo reemplacé con # pero aún no tuve suerte. user1063108

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.