SQL/JRT

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

SQL/JRT (SQL Routines and Types for the Java Programming Language) — расширение языка SQL, принятое в стандарте SQL:1999[1]. Обеспечивает возможность вызова из SQL-кода статических методов языка программирования Java в качестве хранимых процедуры и использование классов Java в качестве структурированных типов.

Две части расширения первоначально произошли из ранних частей 1 и 2 стандарта SQLJ Американского национального института стандартов (часть 0 этого стандарта позднее стандартизирована ISO в виде расширения SQL/OLB).

Пример определения и последующего вызова java-функции (из руководства HSQLDB):

CREATE FUNCTION sinh(v DOUBLE) RETURNS DOUBLE
  LANGUAGE JAVA DETERMINISTIC NO SQL
  EXTERNAL NAME 'CLASSPATH:java.lang.Math.sinh'

SELECT sinh(doublecolumn) FROM mytable

SQL/JRT также позволяет коду Java динамически генерировать таблицы, используя объект java.sql.ResultSet. Итоговые наборы данных возвращаются сконвертированными в форматы, соответствующие реляционным таблицам или представлениям, и могут быть использованы везде, где используются таблицы или представления.

Среди СУБД, с поддержкой хранимых процедур по стандарту SQL/JRT — HSQLDB, Oracle Database (процедуры выполняются в Aurora JVM, реализованной в версии 8i в 1999 году[2][3], позднее переименованную в Oracle JVM[4]), IBM DB2 (с 1998 года, но требуется внешняя JVM[5]).

Примечания[править | править код]

  1. ISO/IEC 9075-13:2002, часть 13
  2. Bulusu Lakshman. Oracle & Java Development. — Sams Publishing, 2002. — P. 6. — ISBN 978-0-672-32117-7.
  3. The Aurora JVM and Its Components Архивная копия от 6 февраля 2023 на Wayback Machine, Oracle Corp.
  4. Rick Greenwald. Oracle Essentials: Oracle Database 11g / Rick Greenwald, Robert Stackowiak, Jonathan Stern. — O'Reilly Media, Inc., 2008. — P. 323. — ISBN 978-0-596-51454-9.
  5. Don Chamberlin. A Complete Guide to DB2 Universal Database. — Morgan Kaufmann, 1998. — P. 565. — ISBN 978-1-55860-482-7.

Ссылки[править | править код]