SQL/JRT, or ''SQL Routines and Types for the Java Programming Language'', is an extension to the
SQL
Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel")
is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
standard first published as
ISO
The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries.
Me ...
/IEC 9075-13:2002 (part 13 of
SQL:1999). SQL/JRT specifies the ability to invoke static
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
methods as routines from within SQL applications, commonly referred to as "Java
stored procedure
A stored procedure (also termed prc, proc, storp, sproc, StoPro, StoredProc, StoreProc, sp, or SP) is a subroutine available to applications that access a relational database management system (RDBMS). Such procedures are stored in the database d ...
s". SQL/JRT also calls for the ability to use Java classes as SQL
structured user-defined types. The two parts of the extension originate from the earlier
ANSI
The American National Standards Institute (ANSI ) is a private nonprofit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organiz ...
SQLJ part 1 and 2 standards (not to be confused with SQLJ part 0, which defined an embedding of SQL into Java, later standardized by ISO as
SQL/OLB.)
Example
SQL/JRT allows a Java function to be called from SQL code like this:
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 also allows Java code to dynamically generate tables using a
java.sql.ResultSet
object. The result sets returned are converted to SQL tables and can be used anywhere a table or view can be used.
Implementations
SQL/JRT stored procedures are implemented in
HSQLDB
HSQLDB (''Hyper SQL Database'') is a relational database management system written in Java. It has a JDBC driver and supports a large subset of SQL-92, SQL:2008, SQL:2011, and SQL:2016 standards. It offers a fast, small (around 1300 kilobytes ...
.
[HSQLDB manual](_blank)
/ref> Java stored procedures have also been implemented in Oracle's JServer (or Aurora JVM), which was introduced in the Oracle Database
Oracle Database (commonly referred to as Oracle DBMS, Oracle Autonomous Database, or simply as Oracle) is a proprietary multi-model database management system produced and marketed by Oracle Corporation.
It is a database commonly used for ru ...
version 8i in 1999;The Aurora JVM and Its Components
Oracle Corp. it is now called
Oracle JVM.
IBM DB2 also supported Java stored procedures since about 1998, although using an external JVM (at that time).
See also
*
SQL:2003
References
External links
SQL:2003 SQL/JRT draftfrom the
Farrago documentation
SQL
{{database-stub