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

#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.

Respuesta Responder a este mensaje
#2 JuanD
18/11/2008 - 11:26 | Informe spam
Y si hago esto;
Select * From dbo.Sabados('18/11/2008')
funciona, entonces, ¿cómo le paso la fecha actual?

"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.

Respuesta Responder a este mensaje
#3 Juan Diego Bueno
18/11/2008 - 12:30 | Informe spam
Hola JuanD:

¿Has probado a guardar primero GETDATE() en una variable de tipo
datetime y pasársela a la función de usuario?

On 18 nov, 11:26, "JuanD" <xxxxxxxx> wrote:
Y si hago esto;
Select * From dbo.Sabados('18/11/2008')
funciona, entonces, ¿cómo le paso la fecha actual?

"JuanD" <xxxxxxxx> escribió en el mensajenews:%

> 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.
Respuesta Responder a este mensaje
#4 JuanD
18/11/2008 - 12:59 | Informe spam
Gracias, pero no me vale porque debo utilizar la función dentro de una vista
y las vistas no me dejan utilizar variables.

"Juan Diego Bueno" escribió en el mensaje
news:
Hola JuanD:

¿Has probado a guardar primero GETDATE() en una variable de tipo
datetime y pasársela a la función de usuario?

On 18 nov, 11:26, "JuanD" <xxxxxxxx> wrote:
Y si hago esto;
Select * From dbo.Sabados('18/11/2008')
funciona, entonces, ¿cómo le paso la fecha actual?

"JuanD" <xxxxxxxx> escribió en el
mensajenews:%

> 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.
Respuesta Responder a este mensaje
#5 Juan Diego Bueno
18/11/2008 - 13:25 | Informe spam
Hola JuanD:

On 18 nov, 12:59, "JuanD" <xxxxxxxx> wrote:
Gracias, pero no me vale porque debo utilizar la función dentro de una vista
y las vistas no me dejan utilizar variables.

"Juan Diego Bueno" escribió en el mensajenews:
Hola JuanD:

¿Has probado a guardar primero GETDATE() en una variable de tipo
datetime y pasársela a la función de usuario?



Pues entonces, lo mejor sería que integraras el GETDATE() dentro de la
propia función, por ejemplo, si se le pasa un NULL a la función o una
fecha tipo 1/1/1900 que la cambie por la fecha actual. De esa forma
podrás usar la función tanto para una fecha estática como para la
actual

Un saludo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida