Función con parámetro opcional (20090209)

09/02/2009 - 13:47 por Mauricio | Informe spam
Hola a todos,
tengo esta función:
ALTER FUNCTION [dbo].[MCS_FN_SellPrice] ( @pProId INT, @pDate DATETIME,
@pSize INT, @pGroupId INT = NULL)
RETURNS money AS
BEGIN
DECLARE @Price AS MONEY
IF @pGroupId IS NULL
SET @pGroupId = (SELECT PGR_ID FROM MCS_PRICEGROUPS WHERE
PGR_CODE = 1)
SET @Price = (SELECT TOP 1 (CASE @pSize
WHEN 1 THEN PRI_SIZE1
WHEN 2 THEN PRI_SIZE2
WHEN 3 THEN PRI_SIZE3
WHEN 4 THEN PRI_SIZE4
WHEN 5 THEN PRI_SIZE5
WHEN 6 THEN PRI_SIZE6
WHEN 7 THEN PRI_SIZE7
WHEN 8 THEN PRI_SIZE8
WHEN 9 THEN PRI_SIZE9
END )
FROM MCS_PRICES WHERE PRI_PGR_ID = @pGroupId AND
PRI_PRD_ID (SELECT PRD_ID FROM MCS_PRICEDATES WHERE PRD_PRO_ID =
@pProId AND
PRD_DATE = (SELECT MAX(PRD_DATE)
FROM MCS_PRICEDATES
WHERE PRD_PRO_ID = @pProId AND PRD_DATE <= @pDate )))
RETURN @Price
END

y quiero que el cuarto parámetro sea opcional. Pensé que así la
estaba definiendo correctamente pero si la llamo con 3 parámetros me
dice que el número de parámetros es insuficiente.
Qué es lo que estoy haciendo mal?
Muchas gracias por vuestra ayuda.

Mauricio
Copenhague, Dinamarca

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
09/02/2009 - 14:24 | Informe spam
No se puede definir un parámetro opcional en una función.

Se requiere proporcionar el valor de cada parámetro declarado cuando se
ejecuta la función, a menos que se defina un valor predeterminado para el
parámetro.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Mauricio" wrote:

Hola a todos,
tengo esta función:
ALTER FUNCTION [dbo].[MCS_FN_SellPrice] ( @pProId INT, @pDate DATETIME,
@pSize INT, @pGroupId INT = NULL)
RETURNS money AS
BEGIN
DECLARE @Price AS MONEY
IF @pGroupId IS NULL
SET @pGroupId = (SELECT PGR_ID FROM MCS_PRICEGROUPS WHERE
PGR_CODE = 1)
SET @Price = (SELECT TOP 1 (CASE @pSize
WHEN 1 THEN PRI_SIZE1
WHEN 2 THEN PRI_SIZE2
WHEN 3 THEN PRI_SIZE3
WHEN 4 THEN PRI_SIZE4
WHEN 5 THEN PRI_SIZE5
WHEN 6 THEN PRI_SIZE6
WHEN 7 THEN PRI_SIZE7
WHEN 8 THEN PRI_SIZE8
WHEN 9 THEN PRI_SIZE9
END )
FROM MCS_PRICES WHERE PRI_PGR_ID = @pGroupId AND
PRI_PRD_ID > (SELECT PRD_ID FROM MCS_PRICEDATES WHERE PRD_PRO_ID =
@pProId AND
PRD_DATE = (SELECT MAX(PRD_DATE)
FROM MCS_PRICEDATES
WHERE PRD_PRO_ID = @pProId AND PRD_DATE <= @pDate )))
RETURN @Price
END

y quiero que el cuarto parámetro sea opcional. Pensé que así la
estaba definiendo correctamente pero si la llamo con 3 parámetros me
dice que el número de parámetros es insuficiente.
Qué es lo que estoy haciendo mal?
Muchas gracias por vuestra ayuda.

Mauricio
Copenhague, Dinamarca



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