Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

try catch dentro una funcion Sql Server

Estas en el tema de try catch dentro una funcion Sql Server en el foro de Bases de Datos General en Foros del Web. Buenas tardes, Necesito ayuda y no se me ocurre como solucionarlo. Tengo una tabla en la base de datos donde en ella se guarda de ...
  #1 (permalink)  
Antiguo 09/10/2018, 08:18
 
Fecha de Ingreso: julio-2008
Mensajes: 146
Antigüedad: 10 años, 4 meses
Puntos: 1
try catch dentro una funcion Sql Server

Buenas tardes,

Necesito ayuda y no se me ocurre como solucionarlo.
Tengo una tabla en la base de datos donde en ella se guarda de todo, es decir es una tabla historico donde se guardan fechas, textos, números...

Tengo un select que lo que hace es recuperar los valores de esta tabla (select * from historial)
Que ocurre, las fechas al ser big int necesito que sean fechas legibles (dd/mm7yyyy). El resto de los campos ya me están bien.

Tenia pensado hacer una función donde recibe el valor de la columna intenta hacer la conversión y si la conversión falla devolver el valor original, si no que retorne la fecha correcta.

He intentado poner un Try catch dentro una función en SQL y me da error (sql invalid use of a side-effecting operator 'begin try' within a function).
¿Alguna idea de como resolverlo?

Como no se distingir si és una fecha o un número porque ambos son números necesito hacer un try catch.

Entiendo que es una mala práctica pero no se me ocurre nada mejor.

Saludos,
Sergi Sacristán Martínez
  #2 (permalink)  
Antiguo 09/10/2018, 09:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.322
Antigüedad: 12 años, 3 meses
Puntos: 761
Respuesta: try catch dentro una funcion Sql Server

porque las fechas son enteros? porque no las guardas en formato fecha? y porque no usas el try catch fuera de la funcion

Código SQL:
Ver original
  1. BEGIN try
  2. SELECT funcion()
  3. END try
  4. BEGIN catch
  5.    error
  6. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/10/2018, 10:04
 
Fecha de Ingreso: julio-2008
Mensajes: 146
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: try catch dentro una funcion Sql Server

Buenas tardes,
Lo tengo que poner en un select, ya que lo necesito para luego realizar unos informes.
Por eso tenía pensado hacer una función y luego desde el select mostrar el resultado de la función.

Es decir
select nombre, dbo.getDate(value) from historial

La función getDate() a priori no sabe que valores recibirá podría ser un texto o un número.
Por esta razón quería poner un try catch dentro de esta.
  #4 (permalink)  
Antiguo 09/10/2018, 10:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.322
Antigüedad: 12 años, 3 meses
Puntos: 761
Respuesta: try catch dentro una funcion Sql Server

no puedes usar try catch dentro de una funcion, podrias usar un procedure en lugar de funcion
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 09/10/2018, 13:44
 
Fecha de Ingreso: julio-2008
Mensajes: 146
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: try catch dentro una funcion Sql Server

Un procedure no me sirve, ya que no lo puedo enlazar en un select, ya lo pense en su momento.
Jope como puede ser tan complicado, con lo fácil que sería poner un try catch en la función.



La zona horaria es GMT -6. Ahora son las 11:48.