La llamada de C# OdbcDataReader al proceso almacenado con parámetros no devuelve datos
Frecuentes
Visto 118 equipos
0
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
1 Respuestas
0
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
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 c# .net or haz tu propia pregunta.
Proporcione un ejemplo de código. No podemos decirle lo que está mal si no nos muestra lo que está haciendo. - dodexahedron