SP's anidados

13/10/2004 - 13:21 por Tomas Martin | Informe spam
Tengo dos sp de la siguiente forma
PROCEDURE SP_A @parA1 [money] OUTPUT, @parA2 [integer], @parA3
[smalldatetime]
PROCEDURE SP_B @parB1 [money] OUTPUT, @parB2 [integer], @parB3
[smalldatetime]

y necesito un tercero un tercero que me devuelva la diferencia del resultado
de SP_A menos SP_B, o sea @parA1-@parB1.

los parámetros del nuevo procedimiento deben ser:
PROCEDURE SP_X @parB1 [money] OUTPUT, @parX2 [integer], @parX3
[smalldatetime]

Nota:
@parX2=@parA2=@parB2
@parX3=@parA3=@parB3

una ayudita, please!

TomasMM

Preguntas similare

Leer las respuestas

#1 Eladio Rincón
13/10/2004 - 14:03 | Informe spam
Tomas,

si has conseguido que SP_A devuelva el valor @parA1, no creo que fuera más
dificil hacer el tercer procedimiento; mira a ver si este ejemplo te sirve:

use northwind
go
drop proc dbo.sp_a
go
drop proc dbo.sp_b
go
drop proc dbo.sp_result
go
create proc dbo.sp_a
@p1 money out,
@p2 money
as
set @p1 = @p2
go
create proc dbo.sp_b
@p1 money out,
@p2 money
as
set @p1 = @p2
go
create proc dbo.sp_result
@pResult money out,
@p1 money,
@p2 money
as
set @pResult = @p1 - @p2
go

declare @p1 money,
@p2 money,
@pResult money

exec dbo.sp_a @p1 out, 3
exec dbo.sp_b @p2 out, 1
exec dbo.sp_result @pResult out, @p1, @p2
select @pResult



Eladio Rincón
SQL Server MVP
Associate Mentor
Solid Quality Learning Iberoamericana
http://www.SolidQualityLearning.com


"Tomas Martin" <t o m a s m m [ARROBA] m i c r o v e n [punto] n e t> wrote
in message news:#
Tengo dos sp de la siguiente forma
PROCEDURE SP_A @parA1 [money] OUTPUT, @parA2 [integer], @parA3
[smalldatetime]
PROCEDURE SP_B @parB1 [money] OUTPUT, @parB2 [integer], @parB3
[smalldatetime]

y necesito un tercero un tercero que me devuelva la diferencia del


resultado
de SP_A menos SP_B, o sea @

los parámetros del nuevo procedimiento deben ser:
PROCEDURE SP_X @parB1 [money] OUTPUT, @parX2 [integer], @parX3
[smalldatetime]

Nota:
@parX2=@parA2=@parB2
@parX3=@parA3=@parB3

una ayudita, please!

TomasMM


Respuesta Responder a este mensaje
#2 SqlRanger
13/10/2004 - 14:46 | Informe spam
Qué follón con tanta letrita y tanto numerito. A ver si me aclaro ...

¿Es esto lo que quieres Tomás? :

CREATE PROCEDURE SP_X
@parX1 [money] OUTPUT, -- ¿Es X1 verdad?
@parX2 [integer],
@parX3 [smalldatetime]
AS
DECLARE @parA1 money, @parB1 money
EXEC SP_A @parA1 OUTPUT, @parX2, @parX3
EXEC SP_B @parB1 OUTPUT, @parX2, @parX3
SET @parX1 = @parA1 - @parB1

GO

Saludos:

Jesús López
MVP
Respuesta Responder a este mensaje
#3 Tomas Martin
13/10/2004 - 16:28 | Informe spam
Hola Jesús, siempre al quite, da gusto :-)

Lo que me mandas es más o menos lo que tengo por lo que deduzco que mi
problema viene por otro lado. Me explico:

si ejecuto SP_X desde el analizador de consultas me devuelve DOS valores:
los correspondientes a la ejecucion de SP_A y SP_B pero no el de la
diferencia

Logicamente desde mi aplicación .net al hacer un command.ExecuteScalar
obtengo el primero de esos dos valores. Si en el procedimiento SP_X cambio
el orden de ejecucion de SP_A y SP_B el valor obtenido tambien cambia.

Si en SP_X añado al final un SELECT @parX1 los valores devueltos por el
analizador son ahora tres siendo el tercero siempre NULL.

Ando perdido

Tomás


"SqlRanger" escribió en el mensaje
news:e65%
Qué follón con tanta letrita y tanto numerito. A ver si me aclaro ...

¿Es esto lo que quieres Tomás? :

CREATE PROCEDURE SP_X
@parX1 [money] OUTPUT, -- ¿Es X1 verdad?
@parX2 [integer],
@parX3 [smalldatetime]
AS
DECLARE @parA1 money, @parB1 money
EXEC SP_A @parA1 OUTPUT, @parX2, @parX3
EXEC SP_B @parB1 OUTPUT, @parX2, @parX3
SET @parX1 = @parA1 - @parB1

GO

Saludos:

Jesús López
MVP


Respuesta Responder a este mensaje
#4 Tomas Martin
13/10/2004 - 16:40 | Informe spam
:'-(
Vale, olvidarlo. el problema estaba en los procedimientos SP_A y SP_B:
hacía un select a pelo el lugar de dar el valor al parametro de retorno

como autocastigo copiaré 1000 veces el sp

Gracias a ambos. El equipo Solid siempre ayudando

Tomás
Respuesta Responder a este mensaje
#5 SqlRanger
13/10/2004 - 17:17 | Informe spam
Vale, pero nada de copiar y pegar eh !
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida