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.
 

Leer las respuestas

#1 JuanD
18/11/2008 - 11:24 | Informe spam
Si hago esto, Select * From dbo.Sabados(getdate()) me lanza otro error
diferente;

Servidor: mensaje 170, nivel 15, estado 1, línea 3
Línea 3: sintaxis incorrecta cerca de '('.

"JuanD" <xxxxxxxx> escribió en el mensaje
news:%
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 similares