El nombre del objeto no es válido (UDF)

18/11/2008 - 10:58 por JuanD | Informe spam
Hola,

He creado la siguiente función que en teoría debería devolver la fecha de
los días con sábados que hay desde una fecha hasta hoy (desde el QA
funciona);

CREATE FUNCTION dbo.Sabados (@FechaI smalldatetime)
RETURNS @Tabla TABLE (Fecha smalldatetime)
BEGIN
declare @i int
declare @dia varchar(20)
declare @fecha datetime
select @i = 0
while @i > - DateDiff(Day, '01/10/2008', @FechaI)
begin
select @dia = DateName(dw, dateadd(d, @i, @FechaI))
select @fecha = DateAdd(d, @i, @FechaI)
if @dia in ('Sábado')
begin
INSERT INTO @Tabla Select convert(nvarchar, @fecha, 103)
end
select @i = @i - 1
end
RETURN
END

A la hora de llamarla así; Select dbo.Sabados(getdate()), me lanza el
siguiente error;

Servidor: mensaje 208, nivel 16, estado 1, línea 1
El nombre de objeto 'dbo.Sabados' no es válido.

Cuando se que el nombre de la función existe y que funciona si ejecuto el
código desde el QA, ¿qué estoy haciendo mal?.
Utilizo SQL Server 2000 SP4.
Gracias.

Preguntas similare

Leer las respuestas

#26 Alejandro Mesa
18/11/2008 - 17:58 | Informe spam
JuanD,

Create una tabla calendario y usala en la funcion.

create function dbo.Sabados (
@sd datetime,
@ed datetime
)
returns table
as
return (
select [fecha]
from dbo.calendario
where nombre_dia = 'Sabado' and fecha between @sd and @ed
)
GO

select *
from dbo.Sabados('20080101', '20081231')
GO

Why should I consider using an auxiliary calendar table?
http://sqlserver2000.databases.aspf...table.html


AMB



"JuanD" wrote:

Mostrar la cita
#27 Carlos M. Calvelo
18/11/2008 - 18:34 | Informe spam
Hola Alejandro,

On 18 nov, 17:58, Alejandro Mesa
wrote:
Mostrar la cita
De acuerdo con lo de la tabla. Pero
teniendo ya la tabla, para que quiere la función? :-)

Saludos,
Carlos
#28 Alejandro Mesa
18/11/2008 - 18:49 | Informe spam
Carlos M. Calvelo,

Eso mismo pense yo, pero le deje la opcion al OP.


AMB


"Carlos M. Calvelo" wrote:

Mostrar la cita
#29 Carlos M. Calvelo
18/11/2008 - 19:51 | Informe spam
On 18 nov, 16:36, "Jose TH" <>>> wrote:
Mostrar la cita
Por que tu lo digas.

Mostrar la cita
Yo no.
#30 Jose TH
18/11/2008 - 20:32 | Informe spam
Ya empieza.

Mostrar la cita
Pues no porque yo lo diga.

Cualquiera con un mínimo de sentido común y conocimiento que se tope con una
vista con CONSTANTES incrustadas como ésta:

create view vSabados as
select * from dbo.Fechas('20080101', '20101231') where diasemana=0

Y no le quedaría más que decir que quien la pensó no se le ocurrió que hay
vida después del 2010. Qué brillante diseño!.

Mostrar la cita
Claro que no, es que tu mente anti Store Procedure no te permite admitir la
tontería que has planteado y que un store procedure puede usarse alguna vez.


Nota: Cuando vuelvas a plagiar la idea de otro, como la de la suma de 7
días, por lo menos da los créditos sí? copión! :)
Ads by Google
Search Busqueda sugerida