VISUAL BASIC.NET Y PROCEDIMIENTO ALMACENADO

29/04/2004 - 14:33 por fabian | Informe spam
hola, tengo una aplicación en visual basic.net que ejecuta varios
procedimientos almacenados. este procedimiento tiene un cursor que recorre
una tabla y comprueba en otra el estado de los pedidos, y de aquellos
pedidos que están en un determinado estado genera un fichero de texto
mediante la utilidad BCP. el caso es que no sé por qué motivo el resultado
no es el esperado. Sin embargo cuando ejecuto el procedimiento desde el
analizador de consultas lo hace bien.
alguien sabe a qué puede ser debido?

Gracias.

Preguntas similare

Leer las respuestas

#1 Hermilson
29/04/2004 - 14:52 | Informe spam
Hola Fabian

Aveces lo que sucede es que el stored procedure genera
mensajes alternos como WARNINGS, ERRORS o PRINTS, estos
mensajes se toman como datos y pueden causar respuestas
inesperadas, en SQL Server puedes utilizar SET NOCOUNT ON
para evitar el caso antes nombrado.

Espero que te sirva, de todas formas seria bueno que
explicaras que esperas y que es lo que sale.

Hermilson
Colombia

Mostrar la cita
ejecuta varios
Mostrar la cita
cursor que recorre
Mostrar la cita
de aquellos
Mostrar la cita
fichero de texto
Mostrar la cita
motivo el resultado
Mostrar la cita
procedimiento desde el
Mostrar la cita
#2 fabian
29/04/2004 - 18:41 | Informe spam
el procedimiento es este. el problema es que desde VISUAL BASIC, a veces es
como si la consulta que hace al servidor ORACLE no devolviese ninguna linea,
cuando sé que si que debería devolver, y por lo tanto no me actuliza la
tabla de SQL (tb_entradas) ni me genera el fichero. Lo bueno es que si lo
ejecuto desde SQL server funciona a la perfección.


PROCEDURE [DBO].[COMPRUEBA_ENTRADAS_CARGADAS] AS
declare @pedi varchar(20)
declare @tt varchar(20)
declare @cd varchar(20)
declare @consig varchar(20)
declare @PED varchar(20)
DECLARE @FICHE VARCHAR(50)
DECLARE @FICH VARCHAR(50)
DECLARE @BCPCOM VARCHAR(255)

declare curEntradas cursor FOR
select npedido,tt,almacen,CONSIG from tb_entradas where estado='R' GROUP BY
npedido,tt,almacen,CONSIG
open curEntradas
fetch next from curEntradas into @pedi,@tt,@cd,@consig
while @@fetch_status=0
begin
SELECT @PEDÎNTRADA
FROM OPENQUERY([SERVIDOR ORACLE], 'SELECT * FROM TBENTRADAS')
ENTRADAS
where centrada = @pedi and tipo = @tt and ccent = @cd and cconsig = @consig
if @@ROWCOUNT<>0
begin
update tb_entradas
set estado='CC'
where npedido = @PED
SELECT @FICHE=FICHERO FROM tb_entradas
WHERE NPEDIDO = @PED
GROUP BY FICHERO
SET @FICH='C:\CET' + SUBSTRING(@FICHE,4,len(@FICHE)-1)
SET @BCPCOM='BCP servidorSQL.dbo.vwEntradasCargadas out ' + @FICH +
' -c -T -t;'
EXEC master..xp_cmdshell @BCPCOM
update tb_entradas
set estado='C', FECHACARGA=GETDATE()
where estado='CC'
end
fetch next from curEntradas into @pedi,@tt,@cd,@consig
end

close curEntradas
deallocate curEntradas

"Hermilson" escribió en el mensaje
news:5efa01c42de8$d60c9d30$
Hola Fabian

Aveces lo que sucede es que el stored procedure genera
mensajes alternos como WARNINGS, ERRORS o PRINTS, estos
mensajes se toman como datos y pueden causar respuestas
inesperadas, en SQL Server puedes utilizar SET NOCOUNT ON
para evitar el caso antes nombrado.

Espero que te sirva, de todas formas seria bueno que
explicaras que esperas y que es lo que sale.

Hermilson
Colombia

Mostrar la cita
ejecuta varios
Mostrar la cita
cursor que recorre
Mostrar la cita
de aquellos
Mostrar la cita
fichero de texto
Mostrar la cita
motivo el resultado
Mostrar la cita
procedimiento desde el
Mostrar la cita
Ads by Google
Search Busqueda sugerida