Saludos.
Una funcionalidad bastante esperada.
Escrito 30 julio 2015 - 07:44
Interesante, gracias Rolphy
Saludos
Escrito 31 julio 2015 - 08:11
Es un rasgo que facilita mucho las cosas.
Un cordial saludo.
Escrito 31 julio 2015 - 09:43
Yo ya vengo usando procedimientos almacenados como funciones desde hace tiempo, funcionan en cualquier versión de Firebird.
Veamos un ejemplo, supongamos esta función con la nueva sintaxis de Firebird 3 :
create function date2text (d timestamp) returns varchar(20) as begin return cast(d as varchar(20));
Esto se utilizaría de esta forma :
select nombre, date2text(fecha_nacimiento) from clientes
Pues bien, mi pseudo-función para que haga lo mismo se construye de esta forma :
create procedure date2text (d timestamp) returns (t varchar(20)) as begin t = cast(d as varchar(20)); suspend;
Y la forma de utilizarlo dentro de una consulta sería :
select nombre, (select t from date2text(fecha_nacimiento)) from clientes
Como podéis ver hay que añadir el suspend en el procedimiento almacenado, para que devuelva ese resultado en forma de dataset. Ese resultado en forma de dataset lo podemos recoger mediante una subconsulta en cualquier lugar donde querramos utilizar esta pseudo-función.
Esta claro que la sintaxis no es tan limpia como las verdaderas funciones, pero funciona de maravilla, es tremendamente útil, y no hay que esperar a Firebird 3, lo podéis usar en cualquier base de datos existente.
Escrito 31 julio 2015 - 11:34
Interesante funcionalidad la que se viene con Firebird 3. Creo a muchos les parecerá más sencilla esa forma. Lo escribes en el notepad y luego lo importas y listo. A usar.
Esta nueva característica para quienes usan los SP como funciones (como es el caso de Marc) y a los que se le hizo costumbre, quizá les parezca de menos.
A mi en lo personal no me atrae mucho la idea de usar un SP como una UDF. Mi cabeza me dice que por algo está pensado y diseñada cada cosa. Con esto nuevo, ya me quema los cables y tendré que ponerme a estudiar de nuevo para ver cuales son los límites de cada cosa; que puede hacer o que no pueden hacer cada uno.
Saludos,