problema al crear funcion -Sql 2000

08/08/2008 - 23:23 por nelva | Informe spam
Necesito crear la siguiente funcion, pero me da error, alguien me puede
ayudar????
NOTA:Incorrect syntax near the keyword 'declare'.

CREATE FUNCTION FNT_RETENCIONES_NOMINA()
RETURNS TABLE
AS
RETURN
/*Procedimiento utilizado para mostrar los ingresos y las retenciones
ejecutada
en el periodo fiscal vigente
declare fecha as datetime
set fecha=getdate()
If month(fecha)>=7 AND month(fecha)<
SELECT fun_id,
ISNULL(sum(nf.nom_sueldo+nf.nom_antiguedad+nf.nom_vacaciones+nf.nom_extras+nf.nom_retroactivo),0)
as sueldoACM,
'06/30/'+convert(char(5),year(fecha)+1) as
FiscalFIN,'07/01/'+convert(char(4),year(fecha)) as FiscalINI,
ISNULL(sum(nom_ir),0) as IrACM, ISNULL(sum(nom_inss),0) as InssACM,
ISNULL(sum(nom_Inss_Patronal),0) as InssPatronalACM
FROM nomina as n, nomina_funcionario as nf
WHERE n.nom_id=nf.nom_id and n.nom_archivar =0 and (n.ting_id= 3 or
n.ting_id=1) and n.nom_periodoini >='07/01/'+convert(char(4),year(fecha))
and n.nom_periodofin <= '06/30/'+convert(char(5),year(fecha)+1)
Group by Fun_id

else
SELECT fun_id,
ISNULL(sum(nf.nom_sueldo+nf.nom_antiguedad+nf.nom_vacaciones+nf.nom_extras+nf.nom_retroactivo),0)
as sueldoACM,
'06/30/'+convert(char(5),year(fecha)) as
FiscalFIN,'07/01/'+convert(char(4),year(fecha)-1) as FiscalINI,
ISNULL(sum(nom_ir),0) as IrACM, ISNULL(sum(nom_inss),0) as InssACM,
ISNULL(sum(nom_Inss_Patronal),0) as InssPatronalACM
FROM nomina as n, nomina_funcionario as nf
WHERE n.nom_id=nf.nom_id and n.nom_archivar =0 and (n.ting_id= 3 or
n.ting_id=1) and n.nom_periodoini >='07/01/'+convert(char(4),year(fecha)-1)
and n.nom_periodofin <= '06/30/'+convert(char(5),year(fecha))
Group by Fun_id
 

Leer las respuestas

#1 Jorge
08/08/2008 - 23:48 | Informe spam
Hola

Primero la variable fecha esta mal declarada:
declare fecha as datetime
Falta el @fecha

Y luego, la sintaxis para el return es la siguiente:
USE pubs
GO
CREATE FUNCTION SalesByStore (@storeid varchar(30))
RETURNS TABLE
AS
RETURN (SELECT title, qty
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)Tu haces despues del Return una serie de
sentencias que deberian estar antes.

JORGE G.

"nelva" escribió en el mensaje
news:OZW9c1Z%
Necesito crear la siguiente funcion, pero me da error, alguien me puede
ayudar????
NOTA:Incorrect syntax near the keyword 'declare'.

CREATE FUNCTION FNT_RETENCIONES_NOMINA()
RETURNS TABLE
AS
RETURN
/*Procedimiento utilizado para mostrar los ingresos y las retenciones
ejecutada
en el periodo fiscal vigente
NUMERIC
declare fecha as datetime
set fecha=getdate()
If month(fecha)>=7 AND month(fecha)<
SELECT fun_id,
ISNULL(sum(nf.nom_sueldo+nf.nom_antiguedad+nf.nom_vacaciones+nf.nom_extras+nf.nom_retroactivo),0)
as sueldoACM,
'06/30/'+convert(char(5),year(fecha)+1) as
FiscalFIN,'07/01/'+convert(char(4),year(fecha)) as FiscalINI,
ISNULL(sum(nom_ir),0) as IrACM, ISNULL(sum(nom_inss),0) as InssACM,
ISNULL(sum(nom_Inss_Patronal),0) as InssPatronalACM
FROM nomina as n, nomina_funcionario as nf
WHERE n.nom_id=nf.nom_id and n.nom_archivar =0 and (n.ting_id= 3 or
n.ting_id=1) and n.nom_periodoini >='07/01/'+convert(char(4),year(fecha))
and n.nom_periodofin <= '06/30/'+convert(char(5),year(fecha)+1)
Group by Fun_id

else
SELECT fun_id,
ISNULL(sum(nf.nom_sueldo+nf.nom_antiguedad+nf.nom_vacaciones+nf.nom_extras+nf.nom_retroactivo),0)
as sueldoACM,
'06/30/'+convert(char(5),year(fecha)) as
FiscalFIN,'07/01/'+convert(char(4),year(fecha)-1) as FiscalINI,
ISNULL(sum(nom_ir),0) as IrACM, ISNULL(sum(nom_inss),0) as InssACM,
ISNULL(sum(nom_Inss_Patronal),0) as InssPatronalACM
FROM nomina as n, nomina_funcionario as nf
WHERE n.nom_id=nf.nom_id and n.nom_archivar =0 and (n.ting_id= 3 or
n.ting_id=1) and n.nom_periodoini
>='07/01/'+convert(char(4),year(fecha)-1)
and n.nom_periodofin <= '06/30/'+convert(char(5),year(fecha))
Group by Fun_id



Preguntas similares