1、BSI Standards PublicationPD ISO/IEC TR 19075-4:2015Information technology Database languages SQL Technical ReportsPart 4: SQL with Routines and typesusing the JavaTMprogramming languagePD ISO/IEC TR 19075-4:2015 PUBLISHED DOCUMENTNational forewordThis Published Document is the UK implementation of I
2、SO/IEC TR 19075-4:2015.The UK participation in its preparation was entrusted to Technical Committee IST/40, Data management and interchange.A list of organizations represented on this committee can be obtained on request to its secretary.This publication does not purport to include all the necessary
3、 provisions of a contract. Users are responsible for its correct application. The British Standards Institution 2015. Published by BSI Standards Limited 2015ISBN 978 0 580 85112 4 ICS 35.060 Compliance with a British Standard cannot confer immunity from legal obligations.This Published Document was
4、published under the authority of the Standards Policy and Strategy Committee on 31 July 2015.Amendments/corrigenda issued since publicationDate Text affectedInformation technology Database languages SQL Technical Reports Part 4: SQL with Routines and types using the JavaTM programming languageTechno
5、logies de linformation Langages de base de donnes SQL rapports techniques Partie 4: SQL avec des Routines et Types Utilisant le Langage de Programmation de JavaTMTECHNICAL REPORTISO/IEC TR19075-4First edition2015-07-01Reference numberISO/IEC TR 19075-4:2015(E) ISO/IEC 2015ii ISO/IEC 2015 All rights
6、reservedCOPYRIGHT PROTECTED DOCUMENT ISO/IEC 2015, Published in SwitzerlandAll 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
7、 an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISOs member body in the country of the requester.ISO copyright officeCh. de Blandonnet 8 CP 401CH-1214 Vernier, Geneva, SwitzerlandTel. +41 22 749 01 11Fax +41 22 749 09 47copyrightiso
8、.orgwww.iso.orgISO/IEC TR 19075-4:2015(E)PD ISO/IEC TR 19075-4:2015Contents PageForeword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vIntroduction. . . . . . . . . . . . . .
9、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi1 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10、. . . . . . . . 12 Normative references. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1 ISO and IEC standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11、 . . . . . . . . . . . . . . . . . . . . 32.2 Other international standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Routines tutorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1 Technical components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . .
13、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.3 Example Java methods: region and correctStates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.4 Installing region and correctStates in SQL. .
14、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.5 Defining SQL names for region and correctStates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.6 A Java method with output parameters: bestTwoE
15、mps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.7 A CREATE PROCEDURE best2 for bestTwoEmps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.8 Calling the best2 procedure. . . . . . . . . . . . . . . . . . . . . . .
16、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.9 A Java method returning a result set: orderedEmps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.10 A CREATE PROCEDURE rankedEmps for orderedEmps. . . . . . . . . . .
17、. . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.11 Calling the rankedEmps procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.12 Overloading Java method names and SQL names. . . . . . . . . . . . . . . . . . . .
18、 . . . . . . . . . . . . . . . . . . . . . . . . . . 153.13 Java main methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.14 Java method signatures in the CREATE statements. . . . . . . . . . . . . . .
19、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.15 Null argument values and the RETURNS NULL clause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.16 Static variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.17 Dropping SQL names of Java methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.18 Removing Java classes from SQL. . . . . . . . . . . . . . . . . . . . . . .
21、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.19 Replacing Java classes in SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.20 Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . .
22、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.21 Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.22 Deployment descripto
23、rs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.23 Paths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24、. . . . 283.24 Privileges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.25 Information Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25、. . . . . . . . . . . . . . . . . . . . . . 304 Types tutorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Example Java classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ISO/IEC 2014 All rights reserved Contents iiiDTR 190
27、75-4:2014(E)PD ISO/IEC TR 19075-4:2015 ISO/IEC TR 19075-4:2015(E) 4.3 Installing Address and Address2Line in an SQL system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.4 CREATE TYPE for Address and Address2Line. . . . . . . . . . . . . . . . . . . . . . . . .
28、. . . . . . . . . . . . . . . . . . . . . . . 364.5 Multiple SQL types for a single Java class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.6 Collapsing subclasses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.7 GRANT and REVOKE statements for data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.8 Deployment descriptors for classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30、 . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.9 Using Java classes as data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.10 SELECT, INSERT, and UPDATE. . . . . . . . . . . . . . . . . . . . . . . . . . .
31、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.11 Referencing Java fields and methods in SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.12 Extended visibility rules. . . . . . . . . . . . . . . . . . . . . . . . . . . .
32、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.13 Logical representation of Java instances in SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.14 Static methods. . . . . . . . . . . . . . . . . . . . . . . . . . .
33、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.15 Static fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.16 Instance-update methods. .
34、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.17 Subtypes in SQL/JRT data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.18 Refere
35、nces to fields and methods of null instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.19 Ordering of SQL/JRT data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Index
36、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53iv SQL with Routines and Types Using the Java Programming Language ISO/IEC 2014 All rights reservedDTR 19075-4:2014(E)PD I
37、SO/IEC TR 19075-4:2015 ISO/IEC TR 19075-4:2015(E) ForewordISO (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 IECparticipate in the develo
38、pment of International Standards through technical committees established by therespective organization to deal with particular fields of technical activity. ISO and IEC technical committeescollaborate in fields of mutual interest. Other international organizations, governmental and non-governmental
39、,in liaison with ISO and IEC, also take part in the work. In the field of information technology, ISO and IEChave established a joint technical committee, ISO/IEC JTC 1.International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.The main task of the joint
40、 technical committee is to prepare International Standards. Draft International Standardsadopted by the joint technical committee are circulated to national bodies for voting. Publication as an Interna-tional Standard requires approval by at least 75 % of the national bodies casting a vote.In except
41、ional circumstances, when the joint technical committee has collected data of a different kind fromthat which is normally published as an International Standard (“state of the art”, for example), it may decideto publish a Technical Report. A Technical Report is entirely informative in nature and sha
42、ll be subject toreview every five years in the same manner as an International Standard.Attention is drawn to the possibility that some of the elements of this document may be the subject of patentrights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.ISO/IEC
43、 TR 19075-4 was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology,Subcommittee SC 32, Data management and interchange.ISO/IEC TR 19075 consists of the following parts, under the general title Information technology Databaselanguages SQL Technical Reports: Part 1: XQuery Reg
44、ular Expression Support in SQL Part 2: SQL Support for Time-Related Information Part 3: SQL Embedded in Programs Using the Java Programming Language Part 4: SQL with Routines and Types Using the Java Programming Language Part 5: Row Pattern Recognition in SQLNOTE 1 The individual parts of multi-part
45、 technical reports are not necessarily published together. New editions of one or moreparts may be published without publication of new editions of other parts.ISO/IEC 2014 All rights reserved Foreword vDTR 19075-4:2014(E)PD ISO/IEC TR 19075-4:2015 ISO/IEC TR 19075-4:2015(E) IntroductionThe organiza
46、tion of this part of ISO/IEC 19075 is as follows:1) Clause 1, “Scope”, specifies the scope of this part of ISO/IEC 19075.2) Clause 2, “Normative references”, identifies additional standards that, through reference in this part ofISO/IEC 19075, constitute provisions of this part of ISO/IEC 19075.3) C
47、lause 3, “Routines tutorial”, provides a tutorial on the use of routines written in the Java programminglanguage within SQL expressions and statements.4) Clause 4, “Types tutorial”, provides a tutorial on the use of user-defined types written in the Java program-ming language within SQL expressions
48、and statements.vi SQL with Routines and Types Using the Java Programming Language ISO/IEC 2014 All rights reservedDTR 19075-4:2014(E)PD ISO/IEC TR 19075-4:2015 ISO/IEC TR 19075-4:2015(E) TECHNICAL REPORT ISO/IEC DTR 19075-4:2014Information technology Database languages SQL Technical Reports Part 4:S
49、QL with Routines and Types Using the Java Programming Language1 ScopeThis Technical Report provides a tutorial of SQL Routines and Types Using the Java Programming Language.The Report discusses the following features of the SQL Language: The use of routines written in the Java programming language within SQL expressions and statements. the use of user-defined types written in the Java programming language within SQL expressions andstatements.ISO/IEC 2014 All rights reserved Scope 1PD ISO/IEC TR 19075-4:2015 ISO/IEC TR 19075-4: