Parametro por Dato o por Nombre de Campo

21/09/2007 - 21:52 por JOMIJIMO | Informe spam
Buenas a todos:

Una vez más pido vuestra ayuda:

Tengo una tabla donde voy guardando los animales que entran una finca
o explotacion ganadera.

Entre otros muchos, los datos implicado en esta cuestion son los
siguientes:

Identificación | Fecha Nacimiento | FechaEntrada | FechaSalida
A001 31.12.2005 31.05.2006 15.01.2007
A002 25.09.2004 12.08.2006 15.01.2007
A003 01.09.2005 15.03.2005 02.02.2007
A004 20.06.2004 31.05.2005 02.02.2007
A006 30.11.2004 20.03.2004 02.02.2007

Tambien tengo una funcion que me calcula la edad en meses, para lo
cual le paso dos parametros:

El primero, la fecha de nacimiento y el segundo la fecha en la que
quiero saber que edad tenia
el animal en cuestion:

EDAD(ANIMALES.FECHA_NACI; @FECHA_CALCULO)

El dato del parametro @FECHA_CALCULO se lanza desde la aplicacion.

Tengo un SP que me da una relacion de animales con la edad que yo le
indique:

SELECT IDENTI, FECHA_NACI, EDAD(FECHA_NACI, @FECHA_CALCULO) AS
EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @FECHA_CALCULO) = @EdadPantalla)


Me gustaría saber si hay alguna forma de poder indicar cual es el
campo desde el que tiene que tomar el valor del parametro o si tiene
que tomarlo desde el dato que lanzo desde la aplicacion (VB).

Como decimos por aqui, "hablando en plata" porder decirle al SP :

"Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
"Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
"Quiero animales con Edad: 7 meses el día 31.03.2007"

Muchas gracias anticipadas por vuestra ayuda y un saludo a todos.

Preguntas similare

Leer las respuestas

#1 Enrique Catala Bañuls
22/09/2007 - 14:54 | Informe spam
Para hacer lo que pides tendras que definirte una pequeña lógica en tu
procedimiento almacenado en el cual le pases un campo numerico que te indique
por ejemplo con un 1 que lo que quieres "entraron", un 2 "salieron" un 3 , el
dia 31-3-2007...

Aunque lo mejor que puedes hacer es una funcion que te devuelva cada una de
esas cosas: EDAD_ENTRADA(), EDAD_SALIDA(), EDAD_DIA(). Ten en cuenta que
T-SQL no soporta sobrecarga de funciones ni procedimientos almacenados.

Salu2!

Atentamente, Enrique Catala Bañuls


"JOMIJIMO" wrote:

Buenas a todos:

Una vez más pido vuestra ayuda:

Tengo una tabla donde voy guardando los animales que entran una finca
o explotacion ganadera.

Entre otros muchos, los datos implicado en esta cuestion son los
siguientes:

Identificación | Fecha Nacimiento | FechaEntrada | FechaSalida
A001 31.12.2005 31.05.2006 15.01.2007
A002 25.09.2004 12.08.2006 15.01.2007
A003 01.09.2005 15.03.2005 02.02.2007
A004 20.06.2004 31.05.2005 02.02.2007
A006 30.11.2004 20.03.2004 02.02.2007

Tambien tengo una funcion que me calcula la edad en meses, para lo
cual le paso dos parametros:

El primero, la fecha de nacimiento y el segundo la fecha en la que
quiero saber que edad tenia
el animal en cuestion:

EDAD(ANIMALES.FECHA_NACI; @FECHA_CALCULO)

El dato del parametro @FECHA_CALCULO se lanza desde la aplicacion.

Tengo un SP que me da una relacion de animales con la edad que yo le
indique:

SELECT IDENTI, FECHA_NACI, EDAD(FECHA_NACI, @FECHA_CALCULO) AS
EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @FECHA_CALCULO) = @EdadPantalla)


Me gustaría saber si hay alguna forma de poder indicar cual es el
campo desde el que tiene que tomar el valor del parametro o si tiene
que tomarlo desde el dato que lanzo desde la aplicacion (VB).

Como decimos por aqui, "hablando en plata" porder decirle al SP :

"Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
"Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
"Quiero animales con Edad: 7 meses el día 31.03.2007"

Muchas gracias anticipadas por vuestra ayuda y un saludo a todos.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
22/09/2007 - 17:42 | Informe spam
JOMIJIMO,

La solucion expuesta por Enrique te puede funcionar bien, pero en vez de
implementarla a nivel de funcion, llevalo a cabo en el procedimeinto.
Pasandole un parametro que indique la fecha que deseas usar para calcular la
edad.

"Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
"Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
"Quiero animales con Edad: 7 meses el día 31.03.2007"



Entraron - 1
Salieron - 2
Fecha determinada - 3

declare @que_fecha_quiero smallint

set @que_fecha_quiero = 1

SELECT
IDENTI,
FECHA_NACI,
EDAD(FECHA_NACI,

case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end

) AS EdadAnimal,

case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end as fecha_de_calculo_o_referencia

FROM
ANIMALES
WHERE
EDAD(FECHA_NACI,
case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end
) = @EdadPantalla
go


AMB


"JOMIJIMO" wrote:

Buenas a todos:

Una vez más pido vuestra ayuda:

Tengo una tabla donde voy guardando los animales que entran una finca
o explotacion ganadera.

Entre otros muchos, los datos implicado en esta cuestion son los
siguientes:

Identificación | Fecha Nacimiento | FechaEntrada | FechaSalida
A001 31.12.2005 31.05.2006 15.01.2007
A002 25.09.2004 12.08.2006 15.01.2007
A003 01.09.2005 15.03.2005 02.02.2007
A004 20.06.2004 31.05.2005 02.02.2007
A006 30.11.2004 20.03.2004 02.02.2007

Tambien tengo una funcion que me calcula la edad en meses, para lo
cual le paso dos parametros:

El primero, la fecha de nacimiento y el segundo la fecha en la que
quiero saber que edad tenia
el animal en cuestion:

EDAD(ANIMALES.FECHA_NACI; @FECHA_CALCULO)

El dato del parametro @FECHA_CALCULO se lanza desde la aplicacion.

Tengo un SP que me da una relacion de animales con la edad que yo le
indique:

SELECT IDENTI, FECHA_NACI, EDAD(FECHA_NACI, @FECHA_CALCULO) AS
EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @FECHA_CALCULO) = @EdadPantalla)


Me gustaría saber si hay alguna forma de poder indicar cual es el
campo desde el que tiene que tomar el valor del parametro o si tiene
que tomarlo desde el dato que lanzo desde la aplicacion (VB).

Como decimos por aqui, "hablando en plata" porder decirle al SP :

"Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
"Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
"Quiero animales con Edad: 7 meses el día 31.03.2007"

Muchas gracias anticipadas por vuestra ayuda y un saludo a todos.


Respuesta Responder a este mensaje
#3 Alejandro Mesa
22/09/2007 - 18:22 | Informe spam
JOMIJIMO,

Despues de postear el msg anterior, se me ocurre que pudieras tener mejor
rendimiento si separas esa logica en dos. Un sp para traer el conjunto cuando
la fecha de referencia es una fecha en especifico (punto 3) y otro sp para
traer el conjunto cuando la fecha de referencia es FECHA_ENTRADA o
FECHA_SALIDA. Puedes adicionar dos columnas calculadas (tipo smallint y
propiedad "PERSISTED") y crear un indice por cada una de ellas, asi que el sp
principal quedaria algo como:

create procedure dbo.usp_p1
@fecha_calculo datetime,
@edad smallint,
@fecha_que_quiero smallint = 1
as
set nocount on

if @fecha_que_quiero in (1, 2)
exec dbo.usp_p2 @fecha_que_quiero, @edad
else
exec dbo.usp_p3 @fecha_calculo, @edad
go

create procedure dbo.usp_p3
@fecha_calculo datetime,
@edad smallint
as
set nocount on

variable
SELECT
IDENTI,
FECHA_NACI,
@EdadPantalla AS EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)
go

create procedure dbo.usp_p2
@fecha_que_quiero smallint,
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
case @fecha_que_quiero
when 1 then edad_entrada
else edad_salida
end AS EdadAnimal,
case @fecha_que_quiero
when 1 then fecha_entrada
else fecha_salida
end as fecha_calculo
FROM ANIMALES
WHERE
case @fecha_que_quiero
when 1 then edad_entrada
else edad_salida
end = @EdadPantalla
go

Ahora, si puedes separa la logica entre fecha de entrada y fecha salida
mejor. Mientras mas especifico seamos en nuestras sentencias "select", mas
estaremos ayudando al optimizador de queries. Asi que si decidimos separar
las logicas:

create procedure dbo.usp_p1
@fecha_calculo datetime,
@edad smallint,
@fecha_que_quiero smallint = 1
as
set nocount on

if @fecha_que_quiero = 1
begin
exec dbo.usp_fecha_entrada @edad
return
end

if @fecha_que_quiero = 2
begin
exec dbo.usp_fecha_salida @edad
return
end

if @fecha_que_quiero = 1
begin
exec dbo.usp_fecha_especifica @fecha_calculo, @edad
return
end
go

create procedure dbo.usp_fecha_especifica
@fecha_calculo datetime,
@edad smallint
as
set nocount on

variable
SELECT
IDENTI,
FECHA_NACI,
@EdadPantalla AS EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)
go

create procedure dbo.usp_fecha_entrada
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
edad_entrada AS EdadAnimal,
fecha_entrada as fecha_calculo
FROM ANIMALES
WHERE
edad_entrada = @EdadPantalla
go

create procedure dbo.usp_fecha_salida
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
edad_salida AS EdadAnimal,
fecha_salida as fecha_calculo
FROM ANIMALES
WHERE
edad_salida = @EdadPantalla
go

Una ultima recomendacion. Ahora que separamos la logica, el procedimiento
para una fecha especifica usa la siguiente expresion en el filtro:

WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)



Cuando manipulamos las columnas en los filtros que aparecen en las clausula
"where"o "having", estamos limitando al optimizador de queries a no usar las
estadisticas de distribucion de la clave de los indices (en caso de existir)
para estimar la cardinalidad de las filas que cumplen con el filtro. Esto
hace que el plan de ejecucion que se escoje no tenga el mismo desempeño que
si dejamos al optimizador usar esas estadisticas.

En este caso, podemos crear una funcion que dada la edad que queremos, nos
devuelva el mes y año (podemos hacer que nos devuelva el dia primero) donde
el animal debe haber nacido, por lo que la expresion quedaria:

...
where
fecha_nacimiento >= dbo.nueva_funcion(@fecha_calculo, @edad)
and fecha_nacimiento < dateadd(month, 1,
dbo.nueva_funcion(@fecha_calculo, @edad))

Como te das cuenta, ya no estamos manipulando la columna [fecha_nacimiento].

create function dbo.ufn_año_mes_nacimiento (
@fecha_calculo datetime,
@edad smallint -- en meses
)
returns datetime
as
begin
declare @d datetime

set @d = dateadd(month, -1 * @edad, convert(char(6), @fecha_calculo, 112) +
'01')

return @d
end

Espero no aburrirte con tanta charla.

AMB

"Alejandro Mesa" wrote:

JOMIJIMO,

La solucion expuesta por Enrique te puede funcionar bien, pero en vez de
implementarla a nivel de funcion, llevalo a cabo en el procedimeinto.
Pasandole un parametro que indique la fecha que deseas usar para calcular la
edad.

> "Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
> "Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
> "Quiero animales con Edad: 7 meses el día 31.03.2007"

Entraron - 1
Salieron - 2
Fecha determinada - 3

declare @que_fecha_quiero smallint

set @que_fecha_quiero = 1

SELECT
IDENTI,
FECHA_NACI,
EDAD(FECHA_NACI,

case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end

) AS EdadAnimal,

case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end as fecha_de_calculo_o_referencia

FROM
ANIMALES
WHERE
EDAD(FECHA_NACI,
case @que_fecha_quiero
when 1 then FECHA_ENTRADA
when 2 then FECHA_SALIDA
else @FECHA_CALCULO
end
) = @EdadPantalla
go


AMB


"JOMIJIMO" wrote:

> Buenas a todos:
>
> Una vez más pido vuestra ayuda:
>
> Tengo una tabla donde voy guardando los animales que entran una finca
> o explotacion ganadera.
>
> Entre otros muchos, los datos implicado en esta cuestion son los
> siguientes:
>
> Identificación | Fecha Nacimiento | FechaEntrada | FechaSalida
> A001 31.12.2005 31.05.2006 15.01.2007
> A002 25.09.2004 12.08.2006 15.01.2007
> A003 01.09.2005 15.03.2005 02.02.2007
> A004 20.06.2004 31.05.2005 02.02.2007
> A006 30.11.2004 20.03.2004 02.02.2007
>
> Tambien tengo una funcion que me calcula la edad en meses, para lo
> cual le paso dos parametros:
>
> El primero, la fecha de nacimiento y el segundo la fecha en la que
> quiero saber que edad tenia
> el animal en cuestion:
>
> EDAD(ANIMALES.FECHA_NACI; @FECHA_CALCULO)
>
> El dato del parametro @FECHA_CALCULO se lanza desde la aplicacion.
>
> Tengo un SP que me da una relacion de animales con la edad que yo le
> indique:
>
> SELECT IDENTI, FECHA_NACI, EDAD(FECHA_NACI, @FECHA_CALCULO) AS
> EdadAnimal
> FROM ANIMALES
> WHERE (EDAD(FECHA_NACI, @FECHA_CALCULO) = @EdadPantalla)
>
>
> Me gustaría saber si hay alguna forma de poder indicar cual es el
> campo desde el que tiene que tomar el valor del parametro o si tiene
> que tomarlo desde el dato que lanzo desde la aplicacion (VB).
>
> Como decimos por aqui, "hablando en plata" porder decirle al SP :
>
> "Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
> "Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
> "Quiero animales con Edad: 7 meses el día 31.03.2007"
>
> Muchas gracias anticipadas por vuestra ayuda y un saludo a todos.
>
>
Respuesta Responder a este mensaje
#4 Alejandro Mesa
22/09/2007 - 18:52 | Informe spam
Esta si es la ultima recomendacion.

Ademas de crear la nueva funcion, esta se debe usar en el procedimiento
principal y pasar el dato como parametro al procedimiento que lo utiliza. El
optimizador de queries no evalua las funciones de usuario durante la
compilacion y por tanto no usa los valores de retorno para estimar
cardinalidad. En cambio, si evalua el valor de los parametros.

create procedure dbo.usp_p1
@fecha_calculo datetime,
@edad smallint,
@fecha_que_quiero smallint = 1
as
set nocount on

declare @d datetime

if @fecha_que_quiero = 1
begin
exec dbo.usp_fecha_entrada @edad
return
end

if @fecha_que_quiero = 2
begin
exec dbo.usp_fecha_salida @edad
return
end

if @fecha_que_quiero = 3
begin
set @d = dbo.ufn_año_mes_nacimiento(@fecha_calculo, @edad)
exec dbo.usp_fecha_especifica @d, @edad
return
end
go

create procedure dbo.usp_fecha_especifica
@fecha_calculo datetime,
@edad smallint
as
set nocount on

variable
SELECT
IDENTI,
FECHA_NACI,
@edad AS EdadAnimal
FROM ANIMALES
where
fecha_nacimiento >= @fecha_calculo
and fecha_nacimiento < dateadd(month, 1, @fecha_calculo)
go


AMB

"Alejandro Mesa" wrote:

JOMIJIMO,

Despues de postear el msg anterior, se me ocurre que pudieras tener mejor
rendimiento si separas esa logica en dos. Un sp para traer el conjunto cuando
la fecha de referencia es una fecha en especifico (punto 3) y otro sp para
traer el conjunto cuando la fecha de referencia es FECHA_ENTRADA o
FECHA_SALIDA. Puedes adicionar dos columnas calculadas (tipo smallint y
propiedad "PERSISTED") y crear un indice por cada una de ellas, asi que el sp
principal quedaria algo como:

create procedure dbo.usp_p1
@fecha_calculo datetime,
@edad smallint,
@fecha_que_quiero smallint = 1
as
set nocount on

if @fecha_que_quiero in (1, 2)
exec dbo.usp_p2 @fecha_que_quiero, @edad
else
exec dbo.usp_p3 @fecha_calculo, @edad
go

create procedure dbo.usp_p3
@fecha_calculo datetime,
@edad smallint
as
set nocount on

variable
SELECT
IDENTI,
FECHA_NACI,
@EdadPantalla AS EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)
go

create procedure dbo.usp_p2
@fecha_que_quiero smallint,
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
case @fecha_que_quiero
when 1 then edad_entrada
else edad_salida
end AS EdadAnimal,
case @fecha_que_quiero
when 1 then fecha_entrada
else fecha_salida
end as fecha_calculo
FROM ANIMALES
WHERE
case @fecha_que_quiero
when 1 then edad_entrada
else edad_salida
end = @EdadPantalla
go

Ahora, si puedes separa la logica entre fecha de entrada y fecha salida
mejor. Mientras mas especifico seamos en nuestras sentencias "select", mas
estaremos ayudando al optimizador de queries. Asi que si decidimos separar
las logicas:

create procedure dbo.usp_p1
@fecha_calculo datetime,
@edad smallint,
@fecha_que_quiero smallint = 1
as
set nocount on

if @fecha_que_quiero = 1
begin
exec dbo.usp_fecha_entrada @edad
return
end

if @fecha_que_quiero = 2
begin
exec dbo.usp_fecha_salida @edad
return
end

if @fecha_que_quiero = 1
begin
exec dbo.usp_fecha_especifica @fecha_calculo, @edad
return
end
go

create procedure dbo.usp_fecha_especifica
@fecha_calculo datetime,
@edad smallint
as
set nocount on

variable
SELECT
IDENTI,
FECHA_NACI,
@EdadPantalla AS EdadAnimal
FROM ANIMALES
WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)
go

create procedure dbo.usp_fecha_entrada
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
edad_entrada AS EdadAnimal,
fecha_entrada as fecha_calculo
FROM ANIMALES
WHERE
edad_entrada = @EdadPantalla
go

create procedure dbo.usp_fecha_salida
@edad smallint
as
set nocount on

SELECT
IDENTI,
FECHA_NACI,
edad_salida AS EdadAnimal,
fecha_salida as fecha_calculo
FROM ANIMALES
WHERE
edad_salida = @EdadPantalla
go

Una ultima recomendacion. Ahora que separamos la logica, el procedimiento
para una fecha especifica usa la siguiente expresion en el filtro:

> WHERE (EDAD(FECHA_NACI, @fecha_calculo) = @EdadPantalla)

Cuando manipulamos las columnas en los filtros que aparecen en las clausula
"where"o "having", estamos limitando al optimizador de queries a no usar las
estadisticas de distribucion de la clave de los indices (en caso de existir)
para estimar la cardinalidad de las filas que cumplen con el filtro. Esto
hace que el plan de ejecucion que se escoje no tenga el mismo desempeño que
si dejamos al optimizador usar esas estadisticas.

En este caso, podemos crear una funcion que dada la edad que queremos, nos
devuelva el mes y año (podemos hacer que nos devuelva el dia primero) donde
el animal debe haber nacido, por lo que la expresion quedaria:

...
where
fecha_nacimiento >= dbo.nueva_funcion(@fecha_calculo, @edad)
and fecha_nacimiento < dateadd(month, 1,
dbo.nueva_funcion(@fecha_calculo, @edad))

Como te das cuenta, ya no estamos manipulando la columna [fecha_nacimiento].

create function dbo.ufn_año_mes_nacimiento (
@fecha_calculo datetime,
@edad smallint -- en meses
)
returns datetime
as
begin
declare @d datetime

set @d = dateadd(month, -1 * @edad, convert(char(6), @fecha_calculo, 112) +
'01')

return @d
end

Espero no aburrirte con tanta charla.

AMB

"Alejandro Mesa" wrote:

> JOMIJIMO,
>
> La solucion expuesta por Enrique te puede funcionar bien, pero en vez de
> implementarla a nivel de funcion, llevalo a cabo en el procedimeinto.
> Pasandole un parametro que indique la fecha que deseas usar para calcular la
> edad.
>
> > "Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
> > "Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
> > "Quiero animales con Edad: 7 meses el día 31.03.2007"
>
> Entraron - 1
> Salieron - 2
> Fecha determinada - 3
>
> declare @que_fecha_quiero smallint
>
> set @que_fecha_quiero = 1
>
> SELECT
> IDENTI,
> FECHA_NACI,
> EDAD(FECHA_NACI,
>
> case @que_fecha_quiero
> when 1 then FECHA_ENTRADA
> when 2 then FECHA_SALIDA
> else @FECHA_CALCULO
> end
>
> ) AS EdadAnimal,
>
> case @que_fecha_quiero
> when 1 then FECHA_ENTRADA
> when 2 then FECHA_SALIDA
> else @FECHA_CALCULO
> end as fecha_de_calculo_o_referencia
>
> FROM
> ANIMALES
> WHERE
> EDAD(FECHA_NACI,
> case @que_fecha_quiero
> when 1 then FECHA_ENTRADA
> when 2 then FECHA_SALIDA
> else @FECHA_CALCULO
> end
> ) = @EdadPantalla
> go
>
>
> AMB
>
>
> "JOMIJIMO" wrote:
>
> > Buenas a todos:
> >
> > Una vez más pido vuestra ayuda:
> >
> > Tengo una tabla donde voy guardando los animales que entran una finca
> > o explotacion ganadera.
> >
> > Entre otros muchos, los datos implicado en esta cuestion son los
> > siguientes:
> >
> > Identificación | Fecha Nacimiento | FechaEntrada | FechaSalida
> > A001 31.12.2005 31.05.2006 15.01.2007
> > A002 25.09.2004 12.08.2006 15.01.2007
> > A003 01.09.2005 15.03.2005 02.02.2007
> > A004 20.06.2004 31.05.2005 02.02.2007
> > A006 30.11.2004 20.03.2004 02.02.2007
> >
> > Tambien tengo una funcion que me calcula la edad en meses, para lo
> > cual le paso dos parametros:
> >
> > El primero, la fecha de nacimiento y el segundo la fecha en la que
> > quiero saber que edad tenia
> > el animal en cuestion:
> >
> > EDAD(ANIMALES.FECHA_NACI; @FECHA_CALCULO)
> >
> > El dato del parametro @FECHA_CALCULO se lanza desde la aplicacion.
> >
> > Tengo un SP que me da una relacion de animales con la edad que yo le
> > indique:
> >
> > SELECT IDENTI, FECHA_NACI, EDAD(FECHA_NACI, @FECHA_CALCULO) AS
> > EdadAnimal
> > FROM ANIMALES
> > WHERE (EDAD(FECHA_NACI, @FECHA_CALCULO) = @EdadPantalla)
> >
> >
> > Me gustaría saber si hay alguna forma de poder indicar cual es el
> > campo desde el que tiene que tomar el valor del parametro o si tiene
> > que tomarlo desde el dato que lanzo desde la aplicacion (VB).
> >
> > Como decimos por aqui, "hablando en plata" porder decirle al SP :
> >
> > "Quiero animales con Edad: 7 meses cuando Entraron en la finca" ó
> > "Quiero animales con Edad: 7 meses cuando Salieron de la finca" ó
> > "Quiero animales con Edad: 7 meses el día 31.03.2007"
> >
> > Muchas gracias anticipadas por vuestra ayuda y un saludo a todos.
> >
> >
Respuesta Responder a este mensaje
#5 JOMIJIMO
23/09/2007 - 13:38 | Informe spam
Enrique, Alejandro, muchismas gracias por vuestro interés y por
vuestras respuestas.

Empezaré a probar lo que me habeis indicado.

Es un gustazo participar en este foro y encontrar siempre alguien que
te echa una mano cuando más lo necesitas.

Muchisimas gracias de nuevo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida