Descartar resultados de un SP dentro de otro

26/09/2004 - 17:13 por Leonardo Azpurua | Informe spam
Hola.

Tengo un SP que calcula los precios de un ticket aereo. El SP devuelve como
valor de retorno el precio en Moneda Nacional del ticket, pero ademas
devuelve los resultados de una consulta donde se incluye el Valor en MN, el
codigo de la unidad monetaria en la que se define la tarifa, el tipo de
cambio y el "metodo de calculo" utilizado (Tarifa Promocional o Descuento
sobre Tarifa Publicada).

Desde otro SP -que calcula los impuestos- llamo al primero para obtener el
valor en MN del Ticket, asi:

EXEC @PrecioMN = CalcPrecio @Ruta, @Clase, @Tarifa, @TipoPax, @Fecha

y funciona, en el sentido de que @PrecioMN asume el precio correspondiente
al tramo. El problema es que obtengo un conjunto de resultados que se agrega
al conjunto de resultados que debe devolver mi SP.

La pregunta es si existe alguna manera de obtener el valor de retorno de
CalcPrecio descartando el conjunto de resultados.

Gracias

Leonardo

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
26/09/2004 - 19:27 | Informe spam
Personalmente, haría dos sproc diferentes (o dos funciones). Una para
calcular el precio y el otro para obtener el conjunto de resultados.

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> wrote in
message news:
Hola.

Tengo un SP que calcula los precios de un ticket aereo. El SP devuelve
como
valor de retorno el precio en Moneda Nacional del ticket, pero ademas
devuelve los resultados de una consulta donde se incluye el Valor en MN,
el
codigo de la unidad monetaria en la que se define la tarifa, el tipo de
cambio y el "metodo de calculo" utilizado (Tarifa Promocional o Descuento
sobre Tarifa Publicada).

Desde otro SP -que calcula los impuestos- llamo al primero para obtener el
valor en MN del Ticket, asi:

EXEC @PrecioMN = CalcPrecio @Ruta, @Clase, @Tarifa, @TipoPax, @Fecha

y funciona, en el sentido de que @PrecioMN asume el precio correspondiente
al tramo. El problema es que obtengo un conjunto de resultados que se
agrega
al conjunto de resultados que debe devolver mi SP.

La pregunta es si existe alguna manera de obtener el valor de retorno de
CalcPrecio descartando el conjunto de resultados.

Gracias

Leonardo


Respuesta Responder a este mensaje
#2 MAXI
26/09/2004 - 21:29 | Informe spam
Hola, si!! deberias usar variables de salida en los SP por ej

CREATE TUSP @V1 CHAR(10), @V2 CHAR(20) OUTPUT AS


SET @V2 = VALOR

Esto luego lo puedes leer como una variable de salida!!

En los libros on line, tienes muy buenos ejemplos de como usar Sp con
variables de salida!! te recomiendo que lo mires un poco y cualquier duda
nos las haces saber!!

Un abrazo




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> escribió
en el mensaje news:
Hola.

Tengo un SP que calcula los precios de un ticket aereo. El SP devuelve
como
valor de retorno el precio en Moneda Nacional del ticket, pero ademas
devuelve los resultados de una consulta donde se incluye el Valor en MN,
el
codigo de la unidad monetaria en la que se define la tarifa, el tipo de
cambio y el "metodo de calculo" utilizado (Tarifa Promocional o Descuento
sobre Tarifa Publicada).

Desde otro SP -que calcula los impuestos- llamo al primero para obtener el
valor en MN del Ticket, asi:

EXEC @PrecioMN = CalcPrecio @Ruta, @Clase, @Tarifa, @TipoPax, @Fecha

y funciona, en el sentido de que @PrecioMN asume el precio correspondiente
al tramo. El problema es que obtengo un conjunto de resultados que se
agrega
al conjunto de resultados que debe devolver mi SP.

La pregunta es si existe alguna manera de obtener el valor de retorno de
CalcPrecio descartando el conjunto de resultados.

Gracias

Leonardo


Respuesta Responder a este mensaje
#3 Leonardo Azpurua
26/09/2004 - 22:57 | Informe spam
"Gustavo Larriera [MVP]" escribió en el mensaje
news:uk7ol4%
Personalmente, haría dos sproc diferentes (o dos funciones). Una para
calcular el precio y el otro para obtener el conjunto de resultados.



Hola, Gustavo:

De hecho, son dos sp diferentes.

Pero para calcular los impuestos, debo conocer los precios; por eso llamo al
primer SP. El problema es que el primero devuelve un conjunto de resultados
(de una sola fila).

Tal vez debería "envolver" al primer SP en una función que devuelva sólo el
valor de retorno y permita ignorar el conjunto de resultados.

Al final, como que no está mal poder acceder a toda la información en una
sola operación, y acabé desarrollando un objeto que acumula los resultados
(CargosTramo) y los devuelve segun se los piden.

Pero me daba curiosidad saber si se podía eliminar el conjunto de resultados
del primer SP desde el segundo.

Salud!

Leonardo
mvp vb
Respuesta Responder a este mensaje
#4 Leonardo Azpurua
26/09/2004 - 23:05 | Informe spam
"MAXI" escribió en el mensaje
news:OjwpX8$
Hola, si!! deberias usar variables de salida en los SP por ej

CREATE TUSP @V1 CHAR(10), @V2 CHAR(20) OUTPUT AS


SET @V2 = VALOR

Esto luego lo puedes leer como una variable de salida!!

En los libros on line, tienes muy buenos ejemplos de como usar Sp con
variables de salida!! te recomiendo que lo mires un poco y cualquier duda
nos las haces saber!!



Hola, Maxi:

Hasta donde entiendo (que podria ser poco) el problema no es con los
argumentos de la llamada al SP.

El SP en cuestion devuelve un numero variable de resultados (en diferentes
paises existen impuestos diferentes, incluso en diferentes regiones de un
mismo pais). Podría definir un numero maximo de argumentos de salida, e
ignorar los que no se utilizaran, pero es la clase de cosas que detesto
(limitar arbitrariamente las capacidades de un componente).

Es cierto que el primer SP siempre devuelve un conjunto de una sola fila,
con un numero fijo y reducido de columnas, de manera que podía reescribirlo
para que devolviera los resultados asignandolos a parametros de salida. Pero
me daba curiosidad saber si era posible realizar de alguna manera la
operación descrita en el primer mensaje: eliminar el conjunto de resultados
del SP "interior" de la coleccion de resultados del SP "externo".

Al final me vinieron bien los dos conjuntos de resultados: los unifique en
la aplicación como una clase "CargosSegmento", contenida dentro del
Segmento, que los recalcula al cambiar cualquiera de sus propiedades.

Salud!

Leonardo
mvp vb
Respuesta Responder a este mensaje
#5 Javier Loria
27/09/2004 - 13:45 | Informe spam
Hola:
Si los precios son un conjunto de datos que debe ser reutilizado dentro
del SQL porque no hacer esa logica en una Vista y no en un Procedimiento
Almacenado?
Si postearas el codigo podriamos opinar con mayor fundamento.


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> wrote in
message news:u5OH$

"Gustavo Larriera [MVP]" escribió en el mensaje
news:uk7ol4%
> Personalmente, haría dos sproc diferentes (o dos funciones). Una para
> calcular el precio y el otro para obtener el conjunto de resultados.

Hola, Gustavo:

De hecho, son dos sp diferentes.

Pero para calcular los impuestos, debo conocer los precios; por eso llamo


al
primer SP. El problema es que el primero devuelve un conjunto de


resultados
(de una sola fila).

Tal vez debería "envolver" al primer SP en una función que devuelva sólo


el
valor de retorno y permita ignorar el conjunto de resultados.

Al final, como que no está mal poder acceder a toda la información en una
sola operación, y acabé desarrollando un objeto que acumula los resultados
(CargosTramo) y los devuelve segun se los piden.

Pero me daba curiosidad saber si se podía eliminar el conjunto de


resultados
del primer SP desde el segundo.

Salud!

Leonardo
mvp vb


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida