Problema con funcion traduce los numerod a letras

18/09/2008 - 21:16 por Mauricio A. | Informe spam
Buenas tardes a todos.

Tengo un problema con SQL 2005 en una funcion que traduce los numeros a
letras. Esta funcion la tenia trabajando perfectamente en SQL 2000 y no se
porque razón aqui la no funciona.

Esta funcion se compone de 10 funciones que van traduciendo unidades,
decenas y centenas hasta los millones, ejemplo:

select dbo.CantidadEnLetras(1973454)

Pero al ejecutarla no termina y se queda como si estuviera trabajando, pero
si ejecuto primero algunas de las iniciales por ejemplo:

select dbo.CentenasEnLetras(454)
select dbo.CentenasDeMillarEnLetras(973454)
select dbo.CantidadEnLetras(761973454)

Asi ya funciona, pero esto despues de un rato sigue sin funcionar otra vez.

No agrego el script de mis funciones porque excede el texto permitido, pero
son 10 funciones dependientes entre si:

CentenasDeMillonEnLetras
DecenasDeMillonEnLetras
UnidadesDeMillonEnLetras
CentenasDeMillarEnLetras
DecenasDeMillarEnLetras
UnidadesDeMillarEnLetras
CentenasEnLetras
DecenasEnLetras
UnidadesEnLetras
CantidadEnLetras

La ultima es la principal (CantidadEnLetras).

Si alguien desea les mandaré su script a su correo personal ya que no pude
adjuntarlo aqui.

Si alguien sabe a que se debe les agradeceria mucho sus tips.

Saludos...

Preguntas similare

Leer las respuestas

#6 Rubén Garrigós
19/09/2008 - 03:28 | Informe spam
Hola Mauricio,

Una vez analizado el código de tus funciones el problema parece ser por un
coste excesivo de las comprobaciones debido a las dependencias del
SCHEMABINDING.

Ya que en este caso no lo necesitas para nada, eliminalo de la definición de
tus funciones (quita el WITH SCHEMABINDING) y seguramente resolverás todos
tus problemas de rendimiento.

Ya nos cuentas.

Rubén Garrigós
Solid Quality Mentors


"Mauricio A." wrote:

Buenas tardes a todos.

Tengo un problema con SQL 2005 en una funcion que traduce los numeros a
letras. Esta funcion la tenia trabajando perfectamente en SQL 2000 y no se
porque razón aqui la no funciona.

Esta funcion se compone de 10 funciones que van traduciendo unidades,
decenas y centenas hasta los millones, ejemplo:

select dbo.CantidadEnLetras(1973454)

Pero al ejecutarla no termina y se queda como si estuviera trabajando, pero
si ejecuto primero algunas de las iniciales por ejemplo:

select dbo.CentenasEnLetras(454)
select dbo.CentenasDeMillarEnLetras(973454)
select dbo.CantidadEnLetras(761973454)

Asi ya funciona, pero esto despues de un rato sigue sin funcionar otra vez.

No agrego el script de mis funciones porque excede el texto permitido, pero
son 10 funciones dependientes entre si:

CentenasDeMillonEnLetras
DecenasDeMillonEnLetras
UnidadesDeMillonEnLetras
CentenasDeMillarEnLetras
DecenasDeMillarEnLetras
UnidadesDeMillarEnLetras
CentenasEnLetras
DecenasEnLetras
UnidadesEnLetras
CantidadEnLetras

La ultima es la principal (CantidadEnLetras).

Si alguien desea les mandaré su script a su correo personal ya que no pude
adjuntarlo aqui.

Si alguien sabe a que se debe les agradeceria mucho sus tips.

Saludos...




Respuesta Responder a este mensaje
#7 Mauricio A.
19/09/2008 - 16:46 | Informe spam
Esta solución fué muy eficaz Rubén.

Te agradezco muchisimo tu ayuda.

Saludos...

Mauricio A.



"Rubén Garrigós" wrote:

Hola Mauricio,

Una vez analizado el código de tus funciones el problema parece ser por un
coste excesivo de las comprobaciones debido a las dependencias del
SCHEMABINDING.

Ya que en este caso no lo necesitas para nada, eliminalo de la definición de
tus funciones (quita el WITH SCHEMABINDING) y seguramente resolverás todos
tus problemas de rendimiento.

Ya nos cuentas.

Rubén Garrigós
Solid Quality Mentors


"Mauricio A." wrote:

> Buenas tardes a todos.
>
> Tengo un problema con SQL 2005 en una funcion que traduce los numeros a
> letras. Esta funcion la tenia trabajando perfectamente en SQL 2000 y no se
> porque razón aqui la no funciona.
>
> Esta funcion se compone de 10 funciones que van traduciendo unidades,
> decenas y centenas hasta los millones, ejemplo:
>
> select dbo.CantidadEnLetras(1973454)
>
> Pero al ejecutarla no termina y se queda como si estuviera trabajando, pero
> si ejecuto primero algunas de las iniciales por ejemplo:
>
> select dbo.CentenasEnLetras(454)
> select dbo.CentenasDeMillarEnLetras(973454)
> select dbo.CantidadEnLetras(761973454)
>
> Asi ya funciona, pero esto despues de un rato sigue sin funcionar otra vez.
>
> No agrego el script de mis funciones porque excede el texto permitido, pero
> son 10 funciones dependientes entre si:
>
> CentenasDeMillonEnLetras
> DecenasDeMillonEnLetras
> UnidadesDeMillonEnLetras
> CentenasDeMillarEnLetras
> DecenasDeMillarEnLetras
> UnidadesDeMillarEnLetras
> CentenasEnLetras
> DecenasEnLetras
> UnidadesEnLetras
> CantidadEnLetras
>
> La ultima es la principal (CantidadEnLetras).
>
> Si alguien desea les mandaré su script a su correo personal ya que no pude
> adjuntarlo aqui.
>
> Si alguien sabe a que se debe les agradeceria mucho sus tips.
>
> Saludos...
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida