Information technology — Database languages — SQL — Part 13: SQL Routines and types using the Java TM programming language (SQL/JRT)

ISO/IEC 9075-13:2016 specifies the ability to invoke static methods written in the Java? programming language as SQL-invoked routines and to use classes defined in the Java programming language as SQL structured user-defined types. (Java is a registered trademark of Oracle Corporation and/or its affiliates.)

Technologies de l'information — Langages de base de données — SQL — Partie 13: Routines et types de SQL utilisant le langage de programmation Java TM (SQL/JRT)

General Information

Status
Withdrawn
Publication Date
13-Dec-2016
Current Stage
9599 - Withdrawal of International Standard
Start Date
01-Jun-2023
Completion Date
14-Feb-2026

Relations

Effective Date
06-Jun-2022
Effective Date
06-Jun-2022
Effective Date
02-Feb-2013

Buy Documents

Standard

ISO_IEC_9075-13(E)_JRT - ISO/IEC 9075-13:2016 - Information technology — Database languages — SQL — Part 13: SQL Routines and types using the Java TM programming language (SQL/JRT)/14/2016

Release Date:14-Dec-2016
English language (151 pages)
sale 15% off
Preview
sale 15% off
Preview

Get Certified

Connect with accredited certification bodies for this standard

BSI Group

BSI (British Standards Institution) is the business standards company that helps organizations make excellence a habit.

UKAS United Kingdom Verified

NYCE

Mexican standards and certification body.

EMA Mexico Verified

Sponsored listings

Frequently Asked Questions

ISO/IEC 9075-13:2016 is a standard published by the International Organization for Standardization (ISO). Its full title is "Information technology — Database languages — SQL — Part 13: SQL Routines and types using the Java TM programming language (SQL/JRT)". This standard covers: ISO/IEC 9075-13:2016 specifies the ability to invoke static methods written in the Java? programming language as SQL-invoked routines and to use classes defined in the Java programming language as SQL structured user-defined types. (Java is a registered trademark of Oracle Corporation and/or its affiliates.)

ISO/IEC 9075-13:2016 specifies the ability to invoke static methods written in the Java? programming language as SQL-invoked routines and to use classes defined in the Java programming language as SQL structured user-defined types. (Java is a registered trademark of Oracle Corporation and/or its affiliates.)

ISO/IEC 9075-13:2016 is classified under the following ICS (International Classification for Standards) categories: 35.060 - Languages used in information technology. The ICS classification helps identify the subject area and facilitates finding related standards.

ISO/IEC 9075-13:2016 has the following relationships with other standards: It is inter standard links to ISO/IEC 9075-13:2016/Cor 2:2022, ISO/IEC 9075-13:2023, ISO/IEC 9075-13:2008. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.

ISO/IEC 9075-13:2016 is available in PDF format for immediate download after purchase. The document can be added to your cart and obtained through the secure checkout process. Digital delivery ensures instant access to the complete standard document.

Standards Content (Sample)


INTERNATIONAL ISO/IEC
STANDARD 9075-13
Fourth edition
2016-12-15
Information technology — Database
languages — SQL —
Part 13:
SQL Routines and types using the Java
TM programming language (SQL/JRT)
Technologies de l’information — Langages de base de données —
SQL —
Partie 13: Routines et types de SQL utilisant le langage de
programmation Java TM (SQL/JRT)
Reference number
©
ISO/IEC 2016
© ISO/IEC 2016, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2016 – All rights reserved

Contents Page
Foreword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
1 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Normative references. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
2.1 ISO and IEC standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Other international standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Definitions, notations, and conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1 Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 Definitions taken from [JLS]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2 Definitions taken from [JVM]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.3 Definitions provided in Part 13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.1 Specification of built-in procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.2 Specification of deployment descriptor files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1 The Java programming language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 SQL-invoked routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2.1 Overview of SQL-invoked routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2.2 Characteristics of SQL-invoked routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 Java class name resolution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.4 SQL result sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5 Parameter mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.6 Unhandled Java exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7 Data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7.1 Host language data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.8 User-defined types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
4.8.1 Introduction to user-defined types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.8.2 User-defined type comparison and assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.8.3 User-defined type descriptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.8.4 Accessing static fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8.5 Converting objects between SQL and Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8.5.1 SERIALIZABLE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.8.5.2 SQLDATA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.8.5.3 Developing for portability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.9 Built-in procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
©ISO/IEC 2016 – All rights reserved Contents iii

4.10 Basic security model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.10.1 Privileges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.11 JARs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.11.1 Deployment descriptor files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5 Lexical elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
5.1 and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2 Names and identifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6 Scalar expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
7 Predicates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
8 Additional common rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.1 Execution of array-returning functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
9 Additional common elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.5 Java routine signature determination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
10 Schema definition and manipulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
10.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
10.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
10.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
10.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
10.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
10.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
10.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
10.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
10.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
10.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11 Access control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
11.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
12 Built-in procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
12.1 SQLJ.INSTALL_JAR procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
12.2 SQLJ.REPLACE_JAR procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
12.3 SQLJ.REMOVE_JAR procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
iv  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

12.4 SQLJ.ALTER_JAVA_PATH procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
13 Java topics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13.1 Java facilities supported by this part of ISO/IEC 9075. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13.1.1 Package java.sql. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
13.1.2 System properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
13.2 Deployment descriptor files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
14 Information Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
14.1 JAR_JAR_USAGE view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.2 JARS view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
14.3 METHOD_SPECIFICATIONS view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
14.4 ROUTINE_JAR_USAGE view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
14.5 TYPE_JAR_USAGE view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
14.6 USER_DEFINED_TYPES view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
14.7 Short name views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
15 Definition Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
15.1 JAR_JAR_USAGE base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
15.2 JARS base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
15.3 METHOD_SPECIFICATIONS base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
15.4 ROUTINE_JAR_USAGE base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
15.5 ROUTINES base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
15.6 SQL_CONFORMANCE base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
15.7 TYPE_JAR_USAGE base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
15.8 USAGE_PRIVILEGES base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
15.9 USER_DEFINED_TYPES base table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
16 Status codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
16.1 SQLSTATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
17 Conformance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
17.1 Claims of conformance to SQL/JRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
17.2 Additional conformance requirements for SQL/JRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
17.3 Implied feature relationships of SQL/JRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Annex A (informative) SQL Conformance Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Annex B (informative) Implementation-defined elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Annex C (informative) Implementation-dependent elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Annex D (infomative) Deprecated features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Annex E (informative) Incompatibilities with ISO/IEC 9075:2011 and 9075:2008. . . . . . . . . . . . . . . . . 139
Annex F (informative) SQL feature taxonomy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Annex G (informative) Defect reports not addressed in this edition of this part of ISO/IEC 9075. . . 143
Bibliography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
©ISO/IEC 2016 – All rights reserved Contents v

Tables
Table Page
1 Standard programming languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2 System properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3 SQLSTATE class and subclass codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4 Implied feature relationships of SQL/JRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5 Feature taxonomy for optional features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
vi  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are members
of ISO or IEC participate in the development of International Standards through technical committees
established by the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international organizations, governmental
and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information
technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are described in
the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for the different types of
document should be noted. This document was drafted in accordance with the editorial rules of the ISO/IEC
Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details of any
patent rights identified during the development of the document will be in the Introduction and/or on the ISO
list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity assessment, as
well as information about ISO's adherence to the World Trade Organization (WTO) principles in the
Technical Barriers to Trade (TBT) see the following URL: www.iso.org/iso/foreword.html.
The committee responsible for this document is ISO/IEC JTC 1, Information technology, SC 32, Data
management and interchange.
This fourth edition of ISO/IEC 9075-13 cancels and replaces the third edition (ISO/IEC 9075-13:2008), which
has been technically revised. It also incorporates Technical Corrigendum ISO/IEC 9075-13:2008/Cor.1:2010.
A list of all parts in the ISO/IEC 9075 series, published under the general title Information technology —
Database languages — SQL, can be found on the ISO website.
NOTE The individual parts of multi-part standards are not necessarily published together. New editions of one or more parts can
be published without publication of new editions of other parts.
©ISO/IEC 2016 – All rights reserved Foreword vii

Introduction
The organization of this part of ISO/IEC 9075 is as follows:
1) Clause 1, “Scope”, specifies the scope of this part of ISO/IEC 9075.
2) Clause 2, “Normative references”, identifies additional standards that, through reference in this part of
ISO/IEC 9075, constitute provisions of this part of ISO/IEC 9075.
3) Clause 3, “Definitions, notations, and conventions”, defines the notations and conventions used in this part
of ISO/IEC 9075.
4) Clause 4, “Concepts”, presents concepts used in the definition of Java routines and types.
5) Clause 5, “Lexical elements”, defines a number of lexical elements used in the definition of Java routines
and types.
6) Clause 6, “Scalar expressions”, defines the elements of the language that produce scalar values.
7) Clause 7, “Predicates”, defines the predicates of the language.
8) Clause 9, “Additional common elements”, defines additional language elements that are used in various
parts of the language.
9) Clause 10, “Schema definition and manipulation”, defines the schema definition and manipulation statements
associated with the definition of Java routines and types.
10) Clause 11, “Access control”, defines facilities for controlling access to SQL-data.
11) Clause 12, “Built-in procedures”, defines new built-in procedures used in the definition of Java routines
and types.
12) Clause 13, “Java topics”, defines the facilities supported by implementations of this part of ISO/IEC 9075
and the conventions used in deployment descriptor files.
13) Clause 14, “Information Schema”, defines viewed tables that contain schema information.
14) Clause 15, “Definition Schema”, defines base tables on which the viewed tables containing schema infor-
mation depend.
15) Clause 16, “Status codes”, defines SQLSTATE values related to Java routines and types.
16) Clause 17, “Conformance”, defines the criteria for conformance to this part of ISO/IEC 9075.
17) Annex A, “SQL Conformance Summary”, is an informative Annex. It summarizes the conformance
requirements of the SQL language.
18) Annex B, “Implementation-defined elements”, is an informative Annex. It lists those features for which
the body of this part of ISO/IEC 9075 states that the syntax, the meaning, the returned results, the effect
on SQL-data and/or schemas, or any other behavior is partly or wholly implementation-defined.
19) Annex C, “Implementation-dependent elements”, is an informative Annex. It lists those features for which
the body of this part of ISO/IEC 9075 states that the syntax, the meaning, the returned results, the effect
on SQL-data and/or schemas, or any other behavior is partly or wholly implementation-dependent.
viii  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

20) Annex D, “Deprecated features”, is an informative Annex. It lists features that the responsible Technical
Committee intend will not appear in a future revised version of this part of ISO/IEC 9075.
21) Annex E, “Incompatibilities with ISO/IEC 9075:2011 and 9075:2008”, is an informative Annex. It lists
incompatibilities with the previous version of this part of ISO/IEC 9075.
22) Annex F, “SQL feature taxonomy”, is an informative Annex. It identifies features of the SQL language
specified in this part of ISO/IEC 9075 by an identifier and a short descriptive name. This taxonomy is used
to specify conformance.
23) Annex G, “Defect reports not addressed in this edition of this part of ISO/IEC 9075”, is an informative
Annex. It describes the Defect Reports that were known at the time of publication of this part of this
International Standard. Each of these problems is a problem carried forward from the previous edition of
ISO/IEC 9075. No new problems have been created in the drafting of this edition of this International
Standard.
In the text of this part of ISO/IEC 9075, Clauses begin a new odd-numbered page, and in Clause 5, “Lexical
elements”, through Clause 17, “Conformance”, Subclauses begin a new page. Any resulting blank space is not
significant.
©ISO/IEC 2016 – All rights reserved Introduction ix

(Blank page)
x  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

INTERNATIONAL STANDARD ISO 9075-13:2016(E)
Information technology — Database languages — SQL —
Part 13:
SQL Routines and Types Using the Java™ Programming Language (SQL/JRT)
1 Scope
This part of ISO/IEC 9075 specifies the ability to invoke static methods written in the Java™ programming
language as SQL-invoked routines and to use classes defined in the Java programming language as SQL
structured user-defined types. (Java is a registered trademark of Oracle Corporation and/or its affiliates.)
©ISO/IEC 2016 – All rights reserved Scope 1

(Blank page)
2  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

2.1 ISO and IEC standards
2 Normative references
The following referenced documents are indispensable for the application of this document. For dated references,
only the edition cited applies. For undated references, the latest edition of the referenced document (including
any amendments) applies.
2.1 ISO and IEC standards
[ISO9075-1] ISO/IEC 9075-1:2016, Information technology — Database languages — SQL — Part 1:
Framework (SQL/Framework).
[ISO9075-2] ISO/IEC 9075-2:2016, Information technology — Database languages — SQL — Part 2:
Foundation (SQL/Foundation).
[ISO9075-10] ISO/IEC 9075-10:2016, Information technology — Database languages — SQL — Part 10:
Object Language Bindings (SQL/OLB).
[ISO9075-11] ISO/IEC 9075-11:2016, Information technology — Database languages — SQL — Part 11:
Information and Definition Schemas (SQL/Schemata).
2.2 Other international standards
[JLS] The Java™ Language Specification, Java SE 7 Edition.
http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf.
[JVM] The Java™ Virtual Machine Specification, Java SE 7 Edition.
http://docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf.
[JavaAPI] Java™ Platform Standard Edition 7 API Specification,
http://docs.oracle.com/javase/7/docs/api/index.html.
[JavaSerialization] Java™ Object Serialization Specification.
http://docs.oracle.com/javase/7/docs/platform/serialization/spec/-
serialTOC.html.
[JDBC] JDBC™ 4.1 Specification
http://download.oracle.com/otn-pub/jcp/jdbc-4_1-mrel-spec/-
jdbc4.1-fr-spec.pdf.
©ISO/IEC 2016 – All rights reserved Normative references 3

(Blank page)
4  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

3.1 Definitions
3 Definitions, notations, and conventions
This Clause modifies Clause 3, “Definitions, notations, and conventions”, in ISO/IEC 9075-2.
3.1 Definitions
This Subclause modifies Subclause 3.1, “Definitions”, in ISO/IEC 9075-2.
3.1.1 Definitions taken from [JLS]
For the purposes of this document, the definitions of the following terms given in [JLS] apply.
3.1.1.1 block
3.1.1.2 class declaration
3.1.1.3 class instance
3.1.1.4 class variable
3.1.1.5 field
3.1.1.6 instance initializer
3.1.1.7 instance variable
3.1.1.8 interface
3.1.1.9 local variable
3.1.1.10 nested class
3.1.1.11 package
3.1.1.12 static initializer
3.1.1.13 subpackage
3.1.2 Definitions taken from [JVM]
For the purposes of this document, the definitions of the following terms given in [JVM] apply.
3.1.2.1 class file
3.1.2.2 Java Virtual Machine
©ISO/IEC 2016 – All rights reserved Definitions, notations, and conventions 5

3.1 Definitions
3.1.3 Definitions provided in Part 13
For the purposes of this document, in addition to those definitions adopted from other sources, the following
definitions apply:
3.1.3.1 default connection
JDBC connection to the current SQL-implementation, SQL-session, and SQL-transaction established
with the data source URL 'jdbc:default:connection'
NOTE 2 — (See [RFC2368] and [RFC3986] for more details about URLs.)
3.1.3.2 deployment descriptor
one or more SQL-statements that specify and to be taken,
respectively, by the SQLJ.INSTALL_JAR and SQLJ.REMOVE_JAR procedures and that are contained
in a deployment descriptor file
3.1.3.3 deployment descriptor file
text file containing deployment descriptors that is contained in a JAR, for which the JAR's manifest
entry, as described by the java.util.jar section of [JavaAPI], specifies SQLJDeploymentDe-
scriptor: TRUE
3.1.3.4 external Java data type
SQL user-defined type defined with a that specifies an type clause>.
3.1.3.5 external Java routine
external routine defined with an that specifies LANGUAGE JAVA and
either PROCEDURE or FUNCTION, or defined with a that specifies
an
3.1.3.6 installed JAR
JAR whose existence has been registered with the SQL-environment and whose contents have been
copied into that SQL-environment due to execution of one of the procedures SQLJ.INSTALL_JAR
and SQLJ.REPLACE_JAR
3.1.3.7 Java Archive (JAR)
zip-formatted file, as described by the java.util.zip section of [JavaAPI], containing zero or
more Java class and ser files, and zero or more deployment descriptor files
NOTE 3 — JARs are a normal vehicle for distributing Java programs and the mechanism specified by this International
Standard to provide the implementation of external Java routines and external Java data types to an SQL-environment.
3.1.3.8 JVM
Java Virtual Machine, as defined by [JVM]
3.1.3.9 ser file
file containing representations of Java objects in the form defined in [JavaSerialization]
3.1.3.10 subject Java class
Java class uniquely identified by the combination of the class's subject Java class name and its
containing JAR
3.1.3.11 subject Java class name
fully-qualified package and class name of a Java class
3.1.3.12 system class
6  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

3.1 Definitions
any Java class provided by a conforming implementation of this part of ISO/IEC 9075 that can be
referenced by an external Java routine or an external Java data type without that class having been
included in an installed JAR
3.2 Conventions
This Subclause modifies Subclause 3.3, “Conventions”, in ISO/IEC 9075-2.
3.2.1 Specification of built-in procedures
Built-in procedures are specified in terms of:
— Function: A short statement of the purpose of the procedure.
— Signature: A specification, in SQL, of the signature of the procedure. The only purpose of the signature
is to specify the procedure name, parameter names, and parameter types. The manner in which these built-
in procedures are defined is implementation-dependent.
— Access Rules: A specification in English of rules governing the accessibility of schema objects that shall
hold before the General Rules may be successfully applied.
— General Rules: A specification in English of the run-time effect of invocation of the procedure. Where
more than one General Rule is used to specify the effect of an element, the required effect is that which
would be obtained by beginning with the first General Rule and applying the Rules in numeric sequence
unless a Rule is applied that specifies or implies a change in sequence or termination of the application of
the Rules. Unless otherwise specified or implied by a specific Rule that is applied, application of General
Rules terminates when the last in the sequence has been applied.
— Conformance Rules: A specification of how the element shall be supported for conformance to SQL.
The scope of notational symbols is the Subclause in which those symbols are defined. Within a Subclause, the
symbols defined in the Signature, Access Rules, or General Rules can be referenced in other rules provided
that they are defined before being referenced.
3.2.2 Specification of deployment descriptor files
Deployment descriptor files are specified in terms of:
— Function: A short statement of the purpose of the deployment descriptor file.
— Model: A brief description of the manner in which a deployment descriptor file is identified within its
containing JAR.
— Properties: A BNF specification of the syntax of the contents of a deployment descriptor file.
— Description: A specification of the requirements and restrictions on the contents of a deployment
descriptor file.
©ISO/IEC 2016 – All rights reserved Definitions, notations, and conventions 7

3.2 Conventions
— Conformance Rules: A specification of how the element shall be supported for conformance to SQL.
8  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

4.1 The Java programming language
4 Concepts
This Clause modifies Clause 4, “Concepts”, in ISO/IEC 9075-2.
4.1 The Java programming language
The Java programming language is a class-based, object-oriented language. This part of ISO/IEC 9075 uses
the following Java concepts and terminology.
A class is the basic construct of Java programs, in that all executable Java code is contained in a Java class
definition. A class is declared by a class declaration that specifies a possibly empty set consisting of zero or
more fields, zero or more methods, zero or more nested classes, zero or more interfaces, zero or more instance
initializers, zero or more static initializers, and zero or more constructors.
The scope of a variable is a class, an instance of the class, or a method of the class. The scope of a variable that
is declared static is the class, and the variable is called a class variable. The scope of each other variable declared
in the class is instances of the class, and such a variable is called an instance variable. Class variables and
instance variables of a class are called fields of that class. The scope of a variable declared in a method is the
block or Java for statement in which it is declared in that method, and the variable is called a local variable.
A class instance consists of an instance of each instance variable declared in the class and each instance variable
declared in the superclasses of the class. Class instances are strongly typed by the class name. The operations
available on a class instance are those defined for its class.
With the exception of the class java.lang.Object, each class is declared to extend (at most) one other class;
a class not explicitly declared to extend another class implicitly extends java.lang.Object. The declared
class is a direct subclass of the class that it extends; the class that it extends is the direct superclass of the
declared class.
Class B is a subclass of class A if B is a direct subclass of A, or if there exists some class C such that B is a
direct subclass of C and C is a subclass of A. Likewise, class B is a superclass of class A if B is a direct superclass
of A, or if there exists some class C such that B is a direct superclass of C and C is a superclass of A. A subclass
has all of the fields and methods of its superclasses and an instance of class B may be used wherever an instance
of a superclass of B is permitted.
A method is an executable routine. A method can be declared static, in which case it is called a class method;
otherwise, it is called an instance method. A class method can be referenced by qualifying the method name
with either the class name or the name of an instance of the class. An instance method is referenced by qualifying
the method name with a Java expression that results in an instance of the class or, in the case of a constructor,
with “new”. The method body of an instance method can reference its class variables, instance variables, and
local variables.
The Java method signature of a method consists of the method name and the number of parameters and their
data types.
A package consists of zero or more classes, zero or more interfaces, and zero or more subpackages (a subpackage
is a package within a package); each package provides its own name space and classes within a package are
©ISO/IEC 2016 – All rights reserved Concepts 9

4.1 The Java programming language
able to refer to other classes in the same package, including classes not referenceable from outside the package.
Every class belongs to exactly one package, either an explicitly specified named package or the anonymous
default package. A class can specify Java import statements to refer to other named packages whose classes
can then be referenced within the class without package qualification.
A class, field, or methods can be declared as public, private, or protected. A public variable or method can be
accessed by any method. A private variable or method can only be referenced by methods in the same class.
A protected variable or method can only be referenced by methods of the same class or subclasses thereof. A
method that is not declared as public, private, or protected can only be called by methods declared by classes
in the same package.
An interface is a Java construct consisting of a set of method signatures. An interface can be implemented by
zero or more classes, a class can be declared to implement zero or more interfaces, and a class is required to
have methods with the signatures specified by all of its declared interfaces.
The Java Serializable interface, java.io.Serializable, as described in [JavaAPI], defines a transformation
between a Java instance and a java.io.OutputStream or java.io.InputStream, as defined by the
java.io.OutputStream and java.io.InputStream sections of [JavaAPI] respectively, writing a persistent
representation of an instance of a Java object and reading a persistent representation of an instance of a Java
object. This transformation retains sufficient information to identify the most specific class of the instance and
to reconstruct the instance.
The Java SQLData interface, java.sql.SQLData, as described in [JDBC] and [JavaAPI], defines a transfor-
mation between a Java instance and an SQL user-defined data type.
The source for a Java class is normally stored in a Java file with the file-type “java”, e.g., myclass.java.
Java is normally compiled to a byte coded instruction set that is portable to any platform supporting Java. A
file containing such byte code is normally stored in aclass file with the file-type “class”, e.g., myclass.class.
A set of class files can be assembled into a Java archive file, or JAR (usually with a file extension of “.jar”. A
JAR is a zip formatted file containing a set of Java class files. JARs are the normal vehicle for distributing Java
programs.
4.2 SQL-invoked routines
This Subclause modifies Subclause 4.33, “SQL-invoked routines”, in ISO/IEC 9075-2.
4.2.1 Overview of SQL-invoked routines
This Subclause modifies Subclause 4.33.1, “Overview of SQL-invoked routines”, in ISO/IEC 9075-2.
Replace the lead text of the 11th paragraph A static SQL-invoked method, whether or not it is an external Java
routine, satisfies the following conditions:
4.2.2 Characteristics of SQL-invoked routines
This Subclause modifies Subclause 4.33.2, “Characteristics of SQL-invoked routines”, in ISO/IEC 9075-2.
10  SQL Routines and Types Using the Java Programming Language (SQL/JRT) ©ISO/IEC 2016 – All rights reserved

4.2 SQL-invoked routines
Insert after the 2nd paragraph External routines appear in two seemingly similar, but fundamentally differing,
forms, where the key differentiator is whether or not the external routine's routine descriptor specifies that the
body of the SQL-invoked routine is written in Java. When the body of the SQL-invoked routine is written in
Java, the external routine is an external Java routine; some differences from other external routines include:
— For any other external routine, the executable form (such as a dynamic link library or some run-time
interpreted form) of that routine exists externally to the SQL-environment's catalogs; for an external Java
routine, the executable form is provided by a specified subject Java routine that exists in the SQL-environ-
ment's catalogs in an installed JAR.
— Because an installed JAR is not required to be completely self-contained (i.e., to have no references to
Java
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.

Loading comments...