Funcion de usuario

12/05/2005 - 00:51 por Cesar Ochica | Informe spam
como puedo hacer una funcion de usario que retorne el maximo valor de una
columna.

como parametros debe recibir el nombre de la tabla y el nombre del campo.

Nota: He intentado hacer un exec en una funcion de usuario pero no es
posible.

gracias

Preguntas similare

Leer las respuestas

#1 Maxi
12/05/2005 - 01:06 | Informe spam
Hola y no te es util la funcion Max?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas
Msn:

Maxi.da[arroba]gmail.com

"Cesar Ochica" escribió en el mensaje
news:
como puedo hacer una funcion de usario que retorne el maximo valor de una
columna.

como parametros debe recibir el nombre de la tabla y el nombre del campo.

Nota: He intentado hacer un exec en una funcion de usuario pero no es
posible.

gracias


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
12/05/2005 - 04:21 | Informe spam
Imagino que estás tratando de usar SQL dinámico en tu función y tratas de
ejecutarlo con EXEC. Eso no es posible, pero puedes intentar hacer un sproc
similar a esto:

USE tempdb
GO

CREATE PROC usp_maximo (@tbl varchar(50), @col varchar(50), @retmaximo int
OUTPUT)
AS
BEGIN
DECLARE @select nvarchar(200)
SET @select = 'SELECT MAX('+@col+') FROM '+@tbl
EXEC sp_executesql @select
RETURN
END
GO
CREATE TABLE unaTabla (unaCol int)
GO
INSERT unaTabla VALUES (10)
INSERT unaTabla VALUES (30)
INSERT unaTabla VALUES (20)
GO

DECLARE @max int
EXEC usp_maximo 'unaTabla', 'unaCol', @max OUTPUT
PRINT @max

De todas formas, es un abordaje muy imperfecto al problema. Por ejemplo,
cómo resolver la situación en que el tipo de datos de la columna a la que se
calcula el máximo es de diferentes tipos de datos. En este ejemplo,
@retmaximo es integer y todo funciona si @col es de tipo integer... pero si
la columna @col fuera de tipo fecha o string?

No me gusta el problema y mucho menos mi solución :-)

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
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.

"Cesar Ochica" wrote in message
news:
como puedo hacer una funcion de usario que retorne el maximo valor de una
columna.

como parametros debe recibir el nombre de la tabla y el nombre del campo.

Nota: He intentado hacer un exec en una funcion de usuario pero no es
posible.

gracias


Respuesta Responder a este mensaje
#3 Cesar Ochica
12/05/2005 - 20:59 | Informe spam
Gracias por responder,

veamos, ... el max si me sirve de hecho es lo que hace parte de lo que
necesito, pero el problema es que sea dinamico o sea que una funcion de
usuario reciba el nombre de una tabla y de un campo cualquiera y retorne el
maximo valor de esa columna.

No me agrada la idea de usar un sp para ello.


gracias
Respuesta Responder a este mensaje
#4 Maxi
12/05/2005 - 21:33 | Informe spam
Hola, te entiendo, pero no le veo el beneficio de hacerlo asi :(


Salu2
Maxi


"Cesar Ochica" escribió en el mensaje
news:
Gracias por responder,

veamos, ... el max si me sirve de hecho es lo que hace parte de lo que
necesito, pero el problema es que sea dinamico o sea que una funcion de
usuario reciba el nombre de una tabla y de un campo cualquiera y retorne
el
maximo valor de esa columna.

No me agrada la idea de usar un sp para ello.


gracias


Respuesta Responder a este mensaje
#5 Cesar Ochica
14/05/2005 - 15:35 | Informe spam
Que aconcejas...

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