Error GetDate en Function

26/07/2005 - 07:11 por Aventurero | Informe spam
Buenas amigos del foro.
Necesito crear la siguiente función en SQL Server 2000 desde el Analizador
de Consultas, pero no me permite debido al error del final.
Gracias por indicarme que debo hacer para que no genere el error.
CREATE FUNCTION F_HallarTarifa
(
@tarifa int,
@modelo int
)
RETURNS money
AS
BEGIN
declare @prima money
select @prima = 0

if substring(ltrim(str(@tarifa)),1,1) in('1', '3', '4', '8', '9')
begin
select @prima = round((a.tasax * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
else if year(GETDATE()) - @modelo < 10
begin
select @prima = round((a.tasay * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
else
begin
select @prima = round((a.tasaz * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
RETURN @prima
END

Servidor: mensaje 443, nivel 16, estado 1, procedimiento F_HallarTarifa,
línea 17
Uso no válido de 'getdate' en una función.
Servidor: mensaje 156, nivel 15, estado 1, procedimiento F_HallarTarifa,
línea 22
Sintaxis incorrecta cerca de la palabra clave 'else'.

Atentamente,


Aventurero
 

Leer las respuestas

#1 qwalgrande
26/07/2005 - 10:22 | Informe spam
Hola.

No puedes llamar a una función no determinista, como getdate(), dentro de
otra función. Como alternativa, puedes añadir un parámetro más a tu función,
de tipo smalldatetime, y en la llamada a la función le pasas getdate(). Así
puedes manejar la fecha actual dentro de tu función, pero sin llamar a
getdate().

qwalgrande

"De lo que ves créete la mitad, de lo que no ves no te creas nada"
V. del V.


"Aventurero" escribió en el mensaje
news:
Buenas amigos del foro.
Necesito crear la siguiente función en SQL Server 2000 desde el Analizador
de Consultas, pero no me permite debido al error del final.
Gracias por indicarme que debo hacer para que no genere el error.
CREATE FUNCTION F_HallarTarifa
(
@tarifa int,
@modelo int
)
RETURNS money
AS
BEGIN
declare @prima money
select @prima = 0

if substring(ltrim(str(@tarifa)),1,1) in('1', '3', '4', '8', '9')
begin
select @prima = round((a.tasax * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
else if year(GETDATE()) - @modelo < 10
begin
select @prima = round((a.tasay * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
else
begin
select @prima = round((a.tasaz * b.salario) /30,0)
from tarifa a, Consecutivos b where a.codigo_tarifa = @tarifa
end
RETURN @prima
END

Servidor: mensaje 443, nivel 16, estado 1, procedimiento F_HallarTarifa,
línea 17
Uso no válido de 'getdate' en una función.
Servidor: mensaje 156, nivel 15, estado 1, procedimiento F_HallarTarifa,
línea 22
Sintaxis incorrecta cerca de la palabra clave 'else'.

Atentamente,


Aventurero


Preguntas similares