CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: pino79 en Miércoles 8 de Agosto de 2007, 10:04
Título: No Ejecuta Bien Los Procedimientos Almacenados
Publicado por: pino79 en Miércoles 8 de Agosto de 2007, 10:04
Buenas, No se si esta pregunta corresponde a este foro, pero allá va. Resulta que tengo un Proyecto en C# .NET conectado por ODBC con una BD en SQL Server Express 2005. Para recuperar los datos ejecuto una serie de procedimientos almacenados, todos ellos probados y ejecutados correctamente. Ahora estoy integrando informes con Crystal Reports para .NET y quiero acceder a una serie de procedimientos. Esto también lo hace bien pero cuando tengo un procedimiento del tipo:
if @valor=0 select * from TABLA1 if @valor=1 select * from TABLA2 if @valor=2 select * from TABLA3
siempre me devuelve la ultima consulta aunque le pase el valor del parámetro 0 o 1.
¿Alguien sabe por qué?
Título: Re: No Ejecuta Bien Los Procedimientos Almacenados
Publicado por: Neopro en Miércoles 8 de Agosto de 2007, 23:44
Pon un punto de interrupcion luego de la variable valor y observa que valor toma esa variable...
Quizá estás haciendo una mala asignación.
Título: Re: No Ejecuta Bien Los Procedimientos Almacenados
Publicado por: pino79 en Viernes 10 de Agosto de 2007, 09:26
Ese código es el del procedimiento almacenado en SQL Server, con lo que no puedo poner un punto de interrupción. Y como el problema ocurre cuando selecciono el procedimiento por el asistente no puedo hacer nada al respecto.
Me está volviendo loco porque el procedimiento almacenado está bien construido y probado en llamadas anteriores desde el código de C#, pero lo que es desde el Crystal Reports no va ni por casualidad bien.
Título: Re: No Ejecuta Bien Los Procedimientos Almacenados
Publicado por: Neopro en Viernes 10 de Agosto de 2007, 16:37
No se bien que estará pasando, pero podrias colocarlo de la siguiente manera :
Código: Text
if @valor='0' select * from TABLA1
if @valor='1' select * from TABLA2
if @valor='2' select * from TABLA3
Con apóstrofes.
Lo otro si solo te muestra el ultimo valor, es porq quizá no alcanza a mostrar los otros y los sobre escribe. Porque es lo que se me ocurre, que pasa por todos, independiente del valor, y se queda con el ultimo asignado.
También si es que es posible, separar con paréntesis y utilizar ; despues de una sentencia SQL.