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

#36 Jose TH
19/11/2008 - 00:19 | Informe spam
Mostrar la cita
Sigues insultando, entiendo tu frustración por dejar al descubierto el
CREATE VIEW mágico que has propuesto jajajajajaj
Sé que vas a soñar varios días con ese CREATE VIEW.

Mostrar la cita
Y a quién se le ocurre recomendar siquiera la POSIBILIDAD de un CREATE VIEW
con dos fechas constantes ? Hombre, CJ Date pasó por ti sin saber que pasó
:) realmente lo has leído ?... en serio, si quieres me lo dices en un email
privado como los que mandan por ahí que yo no se lo diré a nadie...

Mostrar la cita
Si no estás enfadado pues peor, ya que demuestras que tienes un genio de
policía de tránsito a las 12 meridiano. Hombre ve a terapia para controles
ese genio. Tu familia lo agradecerá.


Mostrar la cita
Pero a ti te va mejor la acepción del de que hablaba Pitágoras, sobre todo
el opuesto. No aspiro a que entiendas eso.. pero...


Mostrar la cita
No hombre, no se vale hacer el ridículo. Admite tu falta y te va mejor,
hasta la "foro-audiencia" termine tomándote respeto. Cómo puedes decir una
cosa tan claramente y negarlo así sin inmutarte? Buenos consejos das a los
que buscan ayuda!

Mostrar la cita
Si es que para ti implementación es tener que estar pendiente de rediseñar
las vistas con frecuencia. Si CJ Date te lee debe estar con dolor de
estómago de la risa. :)

Mostrar la cita
Pues por eso te sugiero que te habrías ahorrado desde un principio ese
fatídico CREATE VIEW, por el que habrás de ser recordado de por vida
jajaja... Yo por lo pronto lo he enviado a todos mis amigos y empleados como
ejemplo de las cosas que NO se deben hacer ni mucho menos sugerir pública ni
privadamente jajajajajaj


Mostrar la cita
Claro, iré a la Wikipedia como tú y tu compañerito. :)

Mostrar la cita
Tienes que estudiar un poco más SQL Server , sin duda. No te culpo, la
Wikipedia causa pereza.

Mostrar la cita
Si revisas o lees tu primer mensaje verás cómo confundes lo lógico con lo
físico cuando incluyes la burrada de incluir FECHAS CONSTANTES en la
definición de una vista.
Que buen concepto de nivel LóGICO tiene el que define una vista que ya el
1ero de Enero del 2011 no funciona.
La Wiki está formando una clase de profesionales!!!


Mostrar la cita
Me disculpas pero debes agradecerme que estoy usando un método para provocar
razonamiento inductivo en ti a ver si terminas reconociendo la barrabasada
que has propuesto y te vuelves humilde por primera vez en tu vida y lo
admites.

Mostrar la cita
Pero dices en tu "VISTA" basada en una función con PARAMETROS FIJOS ???...
jajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajjajajajajajajajajajajajajajaj
...

Me disculpas pero tuve que pausar 10 minutos por la risa que me produjo tu
brillantez para no admitir que un SP se puede usar.

Mostrar la cita
Claro, ahora te conviene enfatizar la opción de la función para GENERAR la
tabla. Y el fiasco del CREATE VIEW ??? de eso es que estamos hablando, o ya
lo olvidaste ?


Mostrar la cita
Esa es la estrategia para los tontos, para dar supuesta validez a tu
mentalidad anti-sp. En el fondo ustedes son eso: "anti-sp" totalmente
radicales.

Mostrar la cita
Pues quien no se entera eres tu. Yo hace tiempo , seguro que antes de que
hicieras tu primer programa, que no uso SP's para insertar ni borrar ni
actualizar tablas. Ni tampoco los uso cuando una vista o la tabla directa me
da la necesaria flexiblidad para mis queries. Pero sí los uso para cuando
una consulta requiera algún truco en busca de eficiencia o mantenibilidad
como tablas temporales y eso. Ysobre todo para cuando no procede crear
una vista con un criterio tan simplista y de novato como la barrabasada que
tú propusiste con tu ya famoso CREATE VIEW.


Mostrar la cita
Es que a alguien que esté aprendiendo se le perdona que haga un "+1" para
encontrar los sábados. Pero nada, los copiones están por todos lados, hasta
en los foros. Te perdono, no te sientas mal por eso tampoco.
Pero no te esfuerces de más que si piensas que por responder cualquier cosa
llegarás a borrar tu antológico CREATE VIEW, te equivocas jajajajajaj


Mostrar la cita
Pareces que a tus brillantes argumentos les ha llegado el apagón :)

Mostrar la cita
Pues fíjate que me atrevo a apostar a que lo leí mucho antes que ciertas
personas.

Mostrar la cita
Ya he visto como te burlas junto a tu compañerito de verdaderos gurúes que
hay en este foro.
Y por si acaso no estoy hablando de mi, siempre me considero como mi nick
anterior, un principiante. Pero hay algunos más principiantes que yo
queriendo aparentar erudición.


Mostrar la cita
Deja ese chantaje. Vete tu a recomendar vistas para todo y sp para nada.
Absolutismo irracional se llama eso.

Mostrar la cita
Aquí los que siempre empiezan con su actitud prepotente y discrimadora son
ustedes. Yo sólo me limito a responder al nivel a que me respondan.
Aunque si te fijas bien en este hilo, quien se rebaja eres tú con tus
palabras insultantes ya que te hiciste famoso por tu CREATE VIEW, yo no
tengo culpa de eso y de que te la pases insultando dando razón de que no
encuentras ni qué decir.

Mostrar la cita
También sé pensar mejor la definición de un CREATE VIEW que cierta gente.
Eso lo puedes jurar! :)

Mostrar la cita
Pues igualmente si eso ta hace feliz pero te repito sinceramente, busca
terapia para ese mal carácter que tu familia te lo agradecerá, si es que
tienes.

Mostrar la cita
No, para mi no es problema. Podemos seguir hasta que quieras. Es importante
para que los que leen no se confundan con el espectáculo de tu CREATE VIEW.
No es por ti pues sé que en el fondo entiendes lo que digo y me das la
razón. Tu problema es que tu orgullo no te permite admitir la barrabasada
del CREATE VIEW que le recomendaste al OP.
Si admites tu error podemos dejarlo aquí y no pasa nada hombre.

Pero por lo menos hasta mañana no puedo seguir porque aquí ya es de noche.
#37 Jose TH
19/11/2008 - 00:24 | Informe spam
Pero eso no fue lo que le respondiste a Juan Diego. Seguro que todo el que
te leyó pensó lo mismo.

Revisa tu mensaje o mejora tu redacción. Tienes que tratar de escribir con
más precisión o documentarte mejor, ya que le estás haciendo un mal servicio
a un foro donde entran personas buscando sanamente ayuda de cosas que
desconocen.

Imagínate que el OP o cualquier otro con la misma duda lea eso que tu
escribes en tu involuntaria ignorancia. Si no es porque yo les aclaro que
eso ya está resuelto en las nuevas versiones pues qué va a pasar? que
pensarán que eso no se puede y hasta "mueren pensando eso", claro sin
alusiones personales claro.. :)





"Carlos M. Calvelo" escribió en el mensaje
news:
On 18 nov, 23:22, "Jose TH" <>>> wrote:
Mostrar la cita
Y GETDATE seguirá siendo una función 'nondetermistic', lo
cual no es *realmente* una función.
Pero eso no está en la ayuda. Borrico!
#38 Carlos M. Calvelo
19/11/2008 - 00:37 | Informe spam
On 19 nov, 00:19, "Jose TH" <>>> wrote:
Mostrar la cita
No quieres entender que no se trata de frustración ni enfado.
Es para ver si tu también te das cuenta de lo imbécil que eres.
Por eso lo repito varias veces.

<cortado un monton de aire>
#39 Carlos M. Calvelo
19/11/2008 - 00:45 | Informe spam
On 19 nov, 00:24, "Jose TH" <>>> wrote:

<bla bla bla>

Mostrar la cita
Ufff Imagínate!!! Que todos fueran tan tontaina como tu!
Menos mal que estabas tu aquí para salvarlos a todos
de esa condena!

Eres ridículo total!
#40 Jose TH
19/11/2008 - 00:58 | Informe spam
Mostrar la cita
Todos ven claro como el Sr. Carlos Calvelo dice "la definición de la vista"
a pesar de que lo niega en otros mensajes.

.

Para los que leen el foro y tengan dudas similares a la planteada por el OP
y quieran un consejo más orientado a un mejor performance y mejor
mantenimiento del código de sus vistas:

No se les ocurra ni de asomo basar la definición de una vista en una función
con parámetros fijos y mucho menos de valores de fechas como lo que propone
el Sr. Carlos Calvelo, sobre todo para una función tipo tabla.

Las razones:
1) Mantenimiento: La vista no va a funcionar a partir del 1ero de Enero del
2011. Para que funcione habrá que modificar la definición de la vista. Y no
solo eso sino cada vez que se agote el período fijo que el Sr. Carlos
Calvelo indicó. Eso es una terrible decisión de diseño que ya es costosa
antes de "implementarla".
2)Performance: Aunque a la vista se le envíen parámetros como sugiere en
este mensaje el Sr. Carlos Calvelo, pues qué creen? la función ni se
enterará ya que como quiera para materializar la vista, la función tendrá
que generar la tabla completa para los 3 años, o sea 3 años por 52 sábados
aproximadamente, para solo sacar los pocos registros del parámetro de la
vista. Ni hablar de si en su implementación el Sr. Carlos Calvelo amplía el
rango de la definición de su vista a por ejemplo 30 años, se imaginan? para
sacar ej. los sábados de un solo mes, la función tendría que generar de
todos modos 30 x 52 sábados aproximadamente. Exagerado.

Soluciones:
1)La mejor debería ser la que propone el Sr. Alejandro Mesa y hasta menciona
de refilón el propio Sr. Carlos Calvelo, ya que es una tabla persistente a
la que consultaremos como cualquier tabla.
2)Usar un Store Procedure el cual en ninguna versión de SS tiene limitantes
ni para enviarle getdate() como parámetro ni para usar getdate() dentro de
su lógica. Sin embargo tiene la desventaja que no se puede usar como una
vista o función tipo tabla, es decir, como si fuese una tabla. Pero claro
que depende del uso que se le vaya a dar ya que si lo que se desea es
simplemente generar la tabla y traer los resultados a la aplicación, el SP
te basta y sobra.
3) Cambiarte a una versión más reciente de SQL Server que no tenga la
limitación del GetDate() que tienen las funciones de usuario en la versión
2000. Contrario a lo que sugiere alguien en un mensaje, deben saber que SS
2008 (que es el que uso actualmente) no tiene esa limitante. Pero creo que
ya la versión 2005 no la tenía.


Jose TH
Ads by Google
Search Busqueda sugerida