Cómo escribir una function en la database H2 sin usar Java

Esta pregunta hace reference a la pregunta "¿Cómo crear un procedimiento almacenado utilizando la database H2?" (continuación de la misma pregunta).

¿Hay alguna manera de escribir una function en H2 sin usar código Java? Mi requisito es traducir las funciones escritas en SQL a H2 sin usar código Java. Encontré muchos ejemplos en diferentes portales haciendo lo mismo usando código Java. Su ayuda será muy apreciada.

Saludos Arun

Actualmente, H2 solo admite funciones escritas en Java o en un lenguaje relacionado (por ejemplo, Groovy o Scala). PL / SQL (Oracle) y T-SQL (MS SQL Server, Sybase) no son compatibles.

Si su objective principal es ejecutar sentencias SQL (o SQLesque) dentro de sus funciones H2 Java definidas por el usuario, jOOQ podría ser una opción como una implementación "PL / Java" . Por supuesto, esto seguiría siendo una solución Java.

Un ejemplo de dicha function se puede ver en esta publicación de blog:

http://blog.jooq.org/2011/11/04/use-jooq-inside-your-h2-database

public class Functions { public static int countBooks(Connection connection, Integer authorId) throws SQLException { // Translate your T-SQL statements to jOOQ statements return DSL.using(connection, SQLDialect.H2) .selectCount() .from(BOOK) .where(BOOK.AUTHOR_ID.eq(authorId)) .fetchOne(0, int.class); } } 

Declare el método anterior como ALIAS a H2

 CREATE ALIAS countBooks FOR "org.example.Functions.countBooks"; 

Usa la function en SQL

 SELECT author.last_name, countBooks(author.id) FROM author 

Un enfoque similar se puede tomar con la propia abstracción de SQL de H2 JaQu , por supuesto. Usar JaQu no agregaría ninguna dependencia adicional, creo.