· ii informix guide to sql: syntax published by informix press informix corporation 4100 bohannon...

1324
Informix Guide to SQL Syntax Informix Extended Parallel Server, Version 8.3 Informix Dynamic Server.2000, Version 9.2 December 1999 Part No. 000-6527

Upload: others

Post on 30-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

  • Informix Guide to SQL

    Syntax

    Informix Extended Parallel Server, Version 8.3Informix Dynamic Server.2000, Version 9.2

    December 1999Part No. 000-6527

  • ii Informix Guide to SQL

    Published by Informix Press Informix Corporation4100 Bohannon DriveMenlo Park, CA 94025-1032

    © 1999 Informix Corporation. All rights reserved. The following are trademarks of Informix Corporationor its affiliates, one or more of which may be registered in the United States or other jurisdictions:

    Answers OnLineTM; C-ISAM; Client SDKTM; DataBlade; Data DirectorTM; Decision FrontierTM;Dynamic Scalable ArchitectureTM; Dynamic ServerTM; Dynamic ServerTM, Developer EditionTM;Dynamic ServerTM with Advanced Decision Support OptionTM; Dynamic ServerTM with ExtendedParallel OptionTM; Dynamic ServerTM with MetaCube; Dynamic ServerTM with Universal Data OptionTM;Dynamic ServerTM with Web Integration OptionTM; Dynamic ServerTM, Workgroup EditionTM;Dynamic Virtual MachineTM; Extended Parallel ServerTM; FormationTM; Formation ArchitectTM;Formation Flow EngineTM; Gold Mine Data Access; IIF.2000TM; i.ReachTM; i.SellTM; Illustra; Informix;Informix 4GL; Informix InquireSM; Informix Internet Foundation.2000TM; InformixLink;Informix Red Brick Decision ServerTM; Informix Session ProxyTM; Informix VistaTM; InfoShelfTM;InterforumTM; I-SpyTM; MediazationTM; MetaCube; NewEraTM; ON-BarTM; OnLine Dynamic ServerTM;OnLine/Secure Dynamic ServerTM; OpenCase; OrcaTM; PaVERTM; Red Brick and Design;Red Brick Data MineTM; Red Brick Mine BuilderTM; Red Brick DecisionscapeTM; Red Brick ReadyTM;Red Brick Systems; Regency Support; Rely on Red BrickSM; RISQL; Solution DesignSM; STARindexTM;STARjoinTM; SuperView; TARGETindexTM; TARGETjoinTM; The Data Warehouse Company;The one with the smartest data wins.TM; The world is being digitized. We’re indexing it.SM;Universal Data Warehouse BlueprintTM; Universal Database ComponentsTM; Universal Web ConnectTM;ViewPoint; VisionaryTM; Web Integration SuiteTM. The Informix logo is registered with the United StatesPatent and Trademark Office. The DataBlade logo is registered with the United States Patent andTrademark Office.

    Documentation Team: Linda Briscoe, Evelyn Eldridge, Kathy Schaefer Francis, Mary Kraemer,Barbara Nomiyama, Tom Noronha, Elaina Von Haas, Richelle White

    GOVERNMENT LICENSE RIGHTS

    Software and documentation acquired by or for the US Government are provided with rights as follows:(1) if for civilian agency use, with rights as restricted by vendor’s standard license, as prescribed in FAR 12.212;(2) if for Dept. of Defense use, with rights as restricted by vendor’s standard license, unless superseded by anegotiated vendor license, as prescribed in DFARS 227.7202. Any whole or partial reproduction of software ordocumentation marked with this legend must reproduce this legend.

    : Syntax

  • Table of Contents

    Table ofContents

    IntroductionIn This Introduction . . . . . . . . . . . . . . . . . 3About This Manual . . . . . . . . . . . . . . . . . . 3

    Types of Users . . . . . . . . . . . . . . . . . . 3Software Dependencies . . . . . . . . . . . . . . . 4Assumptions About Your Locale. . . . . . . . . . . . 4Demonstration Databases . . . . . . . . . . . . . . 5

    New Features . . . . . . . . . . . . . . . . . . . . 6New Features in Version 8.3 . . . . . . . . . . . . . 6New Features in Version 9.2 . . . . . . . . . . . . . 8

    Documentation Conventions . . . . . . . . . . . . . . 10Typographical Conventions . . . . . . . . . . . . . 11Icon Conventions . . . . . . . . . . . . . . . . . 12Syntax Conventions . . . . . . . . . . . . . . . . 14Sample-Code Conventions . . . . . . . . . . . . . . 19

    Additional Documentation . . . . . . . . . . . . . . . 19On-Line Manuals . . . . . . . . . . . . . . . . . 20Printed Manuals . . . . . . . . . . . . . . . . . 20On-Line Help . . . . . . . . . . . . . . . . . . 20Error Message Documentation . . . . . . . . . . . . 20Documentation Notes, Release Notes, Machine Notes . . . . 21Related Reading . . . . . . . . . . . . . . . . . 22

    Compliance with Industry Standards . . . . . . . . . . . 22Informix Welcomes Your Comments . . . . . . . . . . . . 23

    Chapter 1 Overview of SQL SyntaxIn This Chapter . . . . . . . . . . . . . . . . . . . 1-3How to Enter SQL Statements . . . . . . . . . . . . . . 1-4How to Enter SQL Comments . . . . . . . . . . . . . . 1-6Categories of SQL Statements . . . . . . . . . . . . . . 1-9ANSI Compliance and Extensions . . . . . . . . . . . . 1-13

  • iv Inform

    Chapter 2 SQL StatementsIn This Chapter . . . . . . . . . . . . . . . . . . . 2-5

    ALLOCATE COLLECTION . . . . . . . . . . . . . 2-6ALLOCATE DESCRIPTOR . . . . . . . . . . . . . 2-8ALLOCATE ROW . . . . . . . . . . . . . . . . 2-10ALTER FRAGMENT . . . . . . . . . . . . . . . 2-12ALTER FUNCTION . . . . . . . . . . . . . . . . 2-41ALTER INDEX . . . . . . . . . . . . . . . . . 2-44ALTER PROCEDURE . . . . . . . . . . . . . . . 2-48ALTER ROUTINE . . . . . . . . . . . . . . . . 2-51ALTER TABLE . . . . . . . . . . . . . . . . . 2-55BEGIN WORK. . . . . . . . . . . . . . . . . . 2-91CLOSE . . . . . . . . . . . . . . . . . . . . 2-94CLOSE DATABASE . . . . . . . . . . . . . . . . 2-98COMMIT WORK. . . . . . . . . . . . . . . . . 2-100CONNECT . . . . . . . . . . . . . . . . . . . 2-103CREATE AGGREGATE . . . . . . . . . . . . . . 2-115CREATE CAST . . . . . . . . . . . . . . . . . 2-119CREATE DATABASE . . . . . . . . . . . . . . . 2-124CREATE DISTINCT TYPE . . . . . . . . . . . . . 2-127CREATE EXTERNAL TABLE . . . . . . . . . . . . 2-131CREATE FUNCTION . . . . . . . . . . . . . . . 2-146CREATE FUNCTION FROM. . . . . . . . . . . . . 2-155CREATE INDEX . . . . . . . . . . . . . . . . . 2-157CREATE OPAQUE TYPE . . . . . . . . . . . . . . 2-186CREATE OPCLASS . . . . . . . . . . . . . . . . 2-193CREATE PROCEDURE . . . . . . . . . . . . . . 2-199CREATE PROCEDURE FROM . . . . . . . . . . . . 2-209CREATE ROLE . . . . . . . . . . . . . . . . . 2-212CREATE ROUTINE FROM . . . . . . . . . . . . . 2-214CREATE ROW TYPE . . . . . . . . . . . . . . . 2-216CREATE SCHEMA . . . . . . . . . . . . . . . . 2-222CREATE SYNONYM . . . . . . . . . . . . . . . 2-226CREATE TABLE . . . . . . . . . . . . . . . . . 2-230CREATE Temporary TABLE . . . . . . . . . . . . . 2-286CREATE TRIGGER . . . . . . . . . . . . . . . . 2-296CREATE VIEW . . . . . . . . . . . . . . . . . 2-334DATABASE. . . . . . . . . . . . . . . . . . . 2-341DEALLOCATE COLLECTION . . . . . . . . . . . . 2-343DEALLOCATE DESCRIPTOR . . . . . . . . . . . . 2-345DEALLOCATE ROW . . . . . . . . . . . . . . . 2-347DECLARE . . . . . . . . . . . . . . . . . . . 2-349DELETE . . . . . . . . . . . . . . . . . . . . 2-373

    ix Guide to SQL: Syntax

  • DESCRIBE . . . . . . . . . . . . . . . . . . 2-382DISCONNECT . . . . . . . . . . . . . . . . . 2-389DROP AGGREGATE . . . . . . . . . . . . . . . 2-393DROP CAST . . . . . . . . . . . . . . . . . . 2-395DROP DATABASE. . . . . . . . . . . . . . . . 2-397DROP FUNCTION . . . . . . . . . . . . . . . 2-399DROP INDEX . . . . . . . . . . . . . . . . . 2-401DROP OPCLASS . . . . . . . . . . . . . . . . 2-403DROP PROCEDURE . . . . . . . . . . . . . . . 2-404DROP ROLE . . . . . . . . . . . . . . . . . . 2-407DROP ROUTINE . . . . . . . . . . . . . . . . 2-408DROP ROW TYPE . . . . . . . . . . . . . . . . 2-410DROP SYNONYM. . . . . . . . . . . . . . . . 2-412DROP TABLE . . . . . . . . . . . . . . . . . 2-413DROP TRIGGER . . . . . . . . . . . . . . . . 2-417DROP TYPE . . . . . . . . . . . . . . . . . . 2-418DROP VIEW . . . . . . . . . . . . . . . . . . 2-420EXECUTE. . . . . . . . . . . . . . . . . . . 2-422EXECUTE FUNCTION . . . . . . . . . . . . . . 2-434EXECUTE IMMEDIATE . . . . . . . . . . . . . . 2-441EXECUTE PROCEDURE . . . . . . . . . . . . . 2-444FETCH. . . . . . . . . . . . . . . . . . . . 2-455FLUSH. . . . . . . . . . . . . . . . . . . . 2-469FREE . . . . . . . . . . . . . . . . . . . . 2-472GET DESCRIPTOR . . . . . . . . . . . . . . . 2-475GET DIAGNOSTICS . . . . . . . . . . . . . . . 2-483GRANT . . . . . . . . . . . . . . . . . . . 2-500GRANT FRAGMENT . . . . . . . . . . . . . . 2-523INFO . . . . . . . . . . . . . . . . . . . . 2-532INSERT . . . . . . . . . . . . . . . . . . . 2-535LOAD . . . . . . . . . . . . . . . . . . . . 2-553LOCK TABLE . . . . . . . . . . . . . . . . . 2-563OPEN . . . . . . . . . . . . . . . . . . . . 2-566OUTPUT . . . . . . . . . . . . . . . . . . . 2-577PREPARE . . . . . . . . . . . . . . . . . . . 2-579PUT . . . . . . . . . . . . . . . . . . . . . 2-593RENAME COLUMN . . . . . . . . . . . . . . . 2-604RENAME DATABASE . . . . . . . . . . . . . . 2-606RENAME TABLE . . . . . . . . . . . . . . . . 2-607REVOKE . . . . . . . . . . . . . . . . . . . 2-610REVOKE FRAGMENT . . . . . . . . . . . . . . 2-628ROLLBACK WORK . . . . . . . . . . . . . . . 2-632

    Table of Contents v

  • vi Inform

    SELECT . . . . . . . . . . . . . . . . . . . . 2-634SET AUTOFREE . . . . . . . . . . . . . . . . . 2-691SET CONNECTION. . . . . . . . . . . . . . . . 2-694SET Database Object Mode . . . . . . . . . . . . . 2-700SET DATASKIP . . . . . . . . . . . . . . . . . 2-709SET DEBUG FILE TO . . . . . . . . . . . . . . . 2-712SET DEFERRED_PREPARE . . . . . . . . . . . . . 2-715SET DESCRIPTOR . . . . . . . . . . . . . . . . 2-719SET EXPLAIN . . . . . . . . . . . . . . . . . . 2-730SET ISOLATION . . . . . . . . . . . . . . . . . 2-736SET LOCK MODE . . . . . . . . . . . . . . . . 2-742SET LOG . . . . . . . . . . . . . . . . . . . 2-745SET OPTIMIZATION . . . . . . . . . . . . . . . 2-747SET PDQPRIORITY . . . . . . . . . . . . . . . . 2-751SET PLOAD FILE . . . . . . . . . . . . . . . . 2-755SET Residency. . . . . . . . . . . . . . . . . . 2-756SET ROLE . . . . . . . . . . . . . . . . . . . 2-758SET SCHEDULE LEVEL . . . . . . . . . . . . . . 2-760SET SESSION AUTHORIZATION . . . . . . . . . . . 2-761SET STATEMENT CACHE . . . . . . . . . . . . . 2-764SET TRANSACTION . . . . . . . . . . . . . . . 2-768SET Transaction Mode . . . . . . . . . . . . . . . 2-774START VIOLATIONS TABLE . . . . . . . . . . . . 2-778STOP VIOLATIONS TABLE . . . . . . . . . . . . . 2-800TRUNCATE . . . . . . . . . . . . . . . . . . 2-802UNLOAD . . . . . . . . . . . . . . . . . . . 2-805UNLOCK TABLE . . . . . . . . . . . . . . . . 2-813UPDATE . . . . . . . . . . . . . . . . . . . 2-815UPDATE STATISTICS . . . . . . . . . . . . . . . 2-835WHENEVER . . . . . . . . . . . . . . . . . . 2-848

    Chapter 3 SPL StatementsIn This Chapter . . . . . . . . . . . . . . . . . . . 3-3

    CALL. . . . . . . . . . . . . . . . . . . . . 3-4CASE . . . . . . . . . . . . . . . . . . . . . 3-7CONTINUE . . . . . . . . . . . . . . . . . . 3-10DEFINE . . . . . . . . . . . . . . . . . . . . 3-11EXIT . . . . . . . . . . . . . . . . . . . . . 3-24FOR . . . . . . . . . . . . . . . . . . . . . 3-26FOREACH . . . . . . . . . . . . . . . . . . . 3-30IF . . . . . . . . . . . . . . . . . . . . . . 3-37LET . . . . . . . . . . . . . . . . . . . . . 3-41

    ix Guide to SQL: Syntax

  • ON EXCEPTION . . . . . . . . . . . . . . . . 3-45RAISE EXCEPTION . . . . . . . . . . . . . . . 3-50RETURN . . . . . . . . . . . . . . . . . . . 3-52SYSTEM . . . . . . . . . . . . . . . . . . . 3-55TRACE . . . . . . . . . . . . . . . . . . . 3-58WHILE. . . . . . . . . . . . . . . . . . . . 3-62

    Chapter 4 SegmentsIn This Chapter . . . . . . . . . . . . . . . . . . 4-3

    Argument. . . . . . . . . . . . . . . . . . . 4-6Collection Derived Table . . . . . . . . . . . . . 4-9Condition . . . . . . . . . . . . . . . . . . 4-27Database Name . . . . . . . . . . . . . . . . . 4-47Database Object Name . . . . . . . . . . . . . . 4-50Data Type . . . . . . . . . . . . . . . . . . . 4-53DATETIME Field Qualifier . . . . . . . . . . . . . 4-71Expression . . . . . . . . . . . . . . . . . . 4-73External Routine Reference . . . . . . . . . . . . . 4-202Identifier . . . . . . . . . . . . . . . . . . . 4-205INTERVAL Field Qualifier . . . . . . . . . . . . . 4-223Jar Name . . . . . . . . . . . . . . . . . . . 4-226Literal Collection . . . . . . . . . . . . . . . . 4-227Literal DATETIME. . . . . . . . . . . . . . . . 4-231Literal INTERVAL . . . . . . . . . . . . . . . . 4-234Literal Number . . . . . . . . . . . . . . . . . 4-237Literal Row . . . . . . . . . . . . . . . . . . 4-239Optimizer Directives . . . . . . . . . . . . . . . 4-244Owner Name . . . . . . . . . . . . . . . . . 4-257Quoted String . . . . . . . . . . . . . . . . . 4-260Relational Operator . . . . . . . . . . . . . . . 4-265Return Clause . . . . . . . . . . . . . . . . . 4-270Routine Modifier . . . . . . . . . . . . . . . . 4-274Routine Parameter List . . . . . . . . . . . . . . 4-286Shared-Object Filename . . . . . . . . . . . . . . 4-292Specific Name . . . . . . . . . . . . . . . . . 4-296Statement Block. . . . . . . . . . . . . . . . . 4-298

    Appendix A Reserved Words for Dynamic Server 2000

    Appendix B Reserved Words for Extended Parallel Server

    Index

    Table of Contents vii

  • Introduction

    Introduction

    In This Introduction . . . . . . . . . . . . . . . . . . 3

    About This Manual . . . . . . . . . . . . . . . . . . . 3Types of Users . . . . . . . . . . . . . . . . . . . 3Software Dependencies . . . . . . . . . . . . . . . . 4Assumptions About Your Locale . . . . . . . . . . . . . 4Demonstration Databases . . . . . . . . . . . . . . . 5

    New Features . . . . . . . . . . . . . . . . . . . . . 6New Features in Version 8.3 . . . . . . . . . . . . . . 6

    Performance Enhancements . . . . . . . . . . . . . 6New SQL Functionality . . . . . . . . . . . . . . 6Version 8.3 Features from Version 7.30 . . . . . . . . . 7

    New Features in Version 9.2 . . . . . . . . . . . . . . 8Extensibility Enhancements . . . . . . . . . . . . . 8Performance Improvements . . . . . . . . . . . . . 9Special Features . . . . . . . . . . . . . . . . . 9Version 9.2 Features from Dynamic Server 7.30 . . . . . . 9

    Documentation Conventions . . . . . . . . . . . . . . . 10Typographical Conventions . . . . . . . . . . . . . . 11Icon Conventions . . . . . . . . . . . . . . . . . . 12

    Comment Icons . . . . . . . . . . . . . . . . . 12Feature, Product, and Platform Icons . . . . . . . . . . 12Compliance Icons . . . . . . . . . . . . . . . . 14

    Syntax Conventions . . . . . . . . . . . . . . . . . 14Elements That Can Appear on the Path . . . . . . . . . 15How to Read a Syntax Diagram . . . . . . . . . . . . 18

    Sample-Code Conventions . . . . . . . . . . . . . . . 19

  • 2 Inform

    Additional Documentation . . . . . . . . . . . . . . . . 19On-Line Manuals . . . . . . . . . . . . . . . . . . 20Printed Manuals . . . . . . . . . . . . . . . . . . 20On-Line Help . . . . . . . . . . . . . . . . . . . 20Error Message Documentation . . . . . . . . . . . . . 20Documentation Notes, Release Notes, Machine Notes . . . . . 21Related Reading . . . . . . . . . . . . . . . . . . 22

    Compliance with Industry Standards. . . . . . . . . . . . . 22

    Informix Welcomes Your Comments . . . . . . . . . . . . . 23

    ix Guide to SQL: Syntax

  • In This IntroductionThis Introduction provides an overview of the information in this manualand describes the conventions it uses.

    About This ManualThis manual contains all the syntax descriptions for structured querylanguage (SQL) and Stored Procedure Language (SPL) statements for Version9.2 of Informix Dynamic Server 2000 and Version 8.3 of Informix ExtendedParallel Server.

    This manual is a companion volume to the Informix Guide to SQL: Reference,the Informix Guide to SQL: Tutorial, and the Informix Guide to Database Designand Implementation. The Informix Guide to SQL: Reference provides referenceinformation for aspects of SQL other than the language statements. TheInformix Guide to SQL: Tutorial shows how to use basic and advanced SQL andSPL routines to access and manipulate the data in your databases. TheInformix Guide to Database Design and Implementation shows how to use SQL toimplement and manage your databases.

    Types of UsersThis manual is written for the following users:

    ■ Database users

    ■ Database administrators

    ■ Database-application programmers

    Introduction 3

  • Software Dependencies

    This manual assumes that you have the following background:

    ■ A working knowledge of your computer, your operating system,and the utilities that your operating system provides

    ■ Some experience working with relational databases or exposure todatabase concepts

    ■ Some experience with computer programming

    If you have limited experience with relational databases, SQL, or youroperating system, refer to the Getting Started manual for your database serverfor a list of supplementary titles.

    Software DependenciesThis manual assumes that you are using one of the following databaseservers:

    ■ Informix Extended Parallel Server, Version 8.3

    ■ Informix Dynamic Server 2000, Version 9.2

    Assumptions About Your LocaleInformix products can support many languages, cultures, and code sets. Allculture-specific information is brought together in a single environment,called a Global Language Support (GLS) locale.

    This manual assumes that you use the U.S. 8859-1 English locale as thedefault locale. The default is en_us.8859-1 (ISO 8859-1) on UNIX platforms oren_us.1252 (Microsoft 1252) for Windows NT environments. This localesupports U.S. English format conventions for dates, times, and currency, andalso supports the ISO 8859-1 or Microsoft 1252 code set, which includes theASCII code set plus many 8-bit characters such as é, è, and ñ.

    If you plan to use nondefault characters in your data or your SQL identifiers,or if you want to conform to the nondefault collation rules of character data,you need to specify the appropriate nondefault locale.

    For instructions on how to specify a nondefault locale, additional syntax, andother considerations related to GLS locales, see the Informix Guide to GLSFunctionality.

    4 Informix Guide to SQL: Syntax

  • Demonstration Databases

    Demonstration DatabasesThe DB-Access utility, which is provided with your Informix database serverproducts, includes one or more of the following demonstration databases:

    ■ The stores_demo database illustrates a relational schema with infor-mation about a fictitious wholesale sporting-goods distributor.Many examples in Informix manuals are based on the stores_demodatabase.

    ■ The sales_demo database illustrates a dimensional schema for data-warehousing applications. For conceptual information about dimen-sional data modeling, see the Informix Guide to Database Design andImplementation. ♦

    ■ The superstores_demo database illustrates an object-relationalschema. The superstores_demo database contains examples ofextended data types, type and table inheritance, and user-definedroutines. ♦

    For information about how to create and populate the demonstrationdatabases, see the DB-Access User’s Manual. For descriptions of the databasesand their contents, see the Informix Guide to SQL: Reference.

    The scripts that you use to install the demonstration databases reside in the$INFORMIXDIR/bin directory on UNIX platforms and in the%INFORMIXDIR%\bin directory in Windows environments.

    XPS

    IDS

    Introduction 5

  • New Features

    New FeaturesFor a comprehensive list of new database server features, see the releasenotes. This section lists new features relevant to this manual.

    New Features in Version 8.3This manual describes new features in Version 8.3 of Extended ParallelServer. The features fall into the following areas:

    ■ Performance enhancements

    ■ New SQL functionality

    ■ Version 8.3 features from Dynamic Server 7.30

    Performance Enhancements

    This manual describes the following performance enhancements toVersion 8.3 of Extended Parallel Server:

    ■ Insert cursors with simple large objects

    ■ Coarse-grain index locks

    ■ Updates with subquery in SET clause

    ■ Index on aggregates

    New SQL Functionality

    This manual describes the following new SQL functionality in Version 8.3 ofExtended Parallel Server:

    ■ CASE statement in Stored Procedure Language (SPL)

    ■ Creating a table with RANGE fragmentation

    ■ DELETE…USING statement to delete rows based on a table join

    ■ Globally detached indexes

    ■ Load and unload simple large objects to external tables

    6 Informix Guide to SQL: Syntax

  • New Features in Version 8.3

    ■ MIDDLE function

    ■ Referential integrity for globally detached indexes

    ■ TRUNCATE statement

    Version 8.3 Features from Version 7.30

    This manual describes the following features from Version 7.3 of DynamicServer in Version 8.3 of Extended Parallel Server:

    ■ Ability to retain update locks

    ■ ALTER FRAGMENT attach with remainders

    ■ ALTER TABLE to add or drop a foreign key constraint

    ■ ALTER TABLE to add, drop, or modify a column

    ■ Constraints on columns other than the fragmentation column

    ■ COUNT function

    ■ DBINFO provides all Version 7.3 information and adds the coserverID and dbspace name

    ■ Deferred constraints for all constraint types

    ■ Deferred referential-integrity constraints

    ■ Insert from SPL functions

    ■ NVL and DECODE functions

    ■ REPLACE, SUBSTR, LPAD, and RPAD functions for stringmanipulation

    ■ RENAME COLUMN statement

    ■ TO_CHAR and TO_DATE functions for date conversion

    ■ Triggers

    ■ UPDATE SET clause subqueries

    ■ UPPER, LOWER, and INITCAP functions for case-insensitive search

    ■ Memory-resident tables

    ■ Violations table

    Introduction 7

  • New Features in Version 9.2

    New Features in Version 9.2This manual describes new features in Version 9.2 of Dynamic Server. Thefeatures fall into the following areas:

    ■ Extensibility enhancements

    ■ Performance improvements

    ■ Special features

    ■ Version 9.2 features from Version 7.30 of Dynamic Server

    Extensibility Enhancements

    This manual describes the following extensibility enhancements toVersion 9.2 of Dynamic Server:

    ■ General enhancements to SQL:

    ❑ Embedded newline characters in quoted strings

    ❑ Nested dot expressions for row types

    ■ Triggers on SELECT statements

    ■ Enhancements to smart large objects:

    ❑ Round-robin fragmentation for smart large objects

    ❑ ALTER TABLE for smart large objects

    ■ Enhancements to collections:

    ❑ Collection constructors that use arbitrary expression elements

    ❑ Collection-derived tables

    ❑ Collection subqueries

    ■ Enhancements to row types:

    ❑ Serial types in row types

    ❑ GRANT, REVOKE UNDER on row types

    ■ Enhancements to user-defined routines (UDRs):

    ❑ GRANT, REVOKE on UDR external languages

    ❑ ALTER FUNCTION, PROCEDURE, ROUTINE statements

    ❑ User-defined aggregates

    8 Informix Guide to SQL: Syntax

  • New Features in Version 9.2

    Performance Improvements

    This manual describes the following performance improvements toVersion 9.2 of Dynamic Server:

    ■ For SQL:

    ❑ Parallel statement-local variables (SLVs)

    ❑ SQL statement cache

    ■ For UDRs:

    ❑ Expensive-function optimization

    ❑ Parallel UDRs

    ❑ User-defined statistics routines

    Special Features

    This manual describes the following special features of Version 9.2 ofDynamic Server:

    ■ Long identifiers:

    ❑ 128-character identifier

    ❑ 32-character user names

    ■ Ability to retain update locks

    Version 9.2 Features from Dynamic Server 7.30

    This manual also describes features first released in Version 7.30. Thesefeatures fall into the following areas:

    ■ Reliability, availability, and serviceability:

    ALTER FRAGMENT ATTACH, DETACH enhancements

    ■ Performance:

    ❑ Optimizer directives

    ❑ Select first n rows

    ❑ SET OPTIMIZATION statement enhancements

    ❑ Memory-resident tables

    Introduction 9

  • Documentation Conventions

    ■ Application migration:

    ❑ UPPER, LOWER, and INITCAP functions for case-insensitivesearch (for built-in types)

    ❑ REPLACE, SUBSTR, LPAD, and RPAD functions for string manip-ulation (for built-in types)

    ❑ UNION operator in CREATE VIEW statement

    ❑ CASE expression

    ❑ NVL and DECODE functions

    ❑ TO_CHAR and TO_DATE date-conversion functions (for built-intypes)

    ❑ EXECUTE PROCEDURE syntax to update triggering columns

    ❑ New arguments to the dbinfo() function to obtain the hostnameand version of the database server

    Documentation ConventionsThis section describes the conventions that this manual uses. Theseconventions make it easier to gather information from this and other volumesin the documentation set.

    The following conventions are discussed:

    ■ Typographical conventions

    ■ Icon conventions

    ■ Syntax conventions

    ■ Sample-code conventions

    10 Informix Guide to SQL: Syntax

  • Typographical Conventions

    Typographical ConventionsThis manual uses the following conventions to introduce new terms,illustrate screen displays, describe command syntax, and so forth.

    Tip: When you are instructed to “enter” characters or to “execute” a command,immediately press RETURN after the entry. When you are instructed to “type” thetext or to “press” other keys, no RETURN is required.

    Convention Meaning

    KEYWORD All primary elements in a programming language statement(keywords) appear in uppercase letters in a serif font.

    italicsitalicsitalics

    Within text, new terms and emphasized words appear in italics.Within syntax and code examples, variable values that you areto specify appear in italics.

    boldfaceboldface

    Names of program entities (such as classes, events, and tables),environment variables, file and pathnames, and interfaceelements (such as icons, menu items, and buttons) appear inboldface.

    monospacemonospace

    Information that the product displays and information that youenter appear in a monospace typeface.

    KEYSTROKE Keys that you are to press appear in uppercase letters in a sansserif font.

    ♦ This symbol indicates the end of one or more product- orplatform-specific paragraphs.

    ➞ This symbol indicates a menu item. For example, “ChooseTools➞Options” means choose the Options item from theTools menu.

    Introduction 11

  • Icon Conventions

    Icon ConventionsThroughout the documentation, you will find text that is identified by severaldifferent types of icons. This section describes these icons.

    Comment Icons

    Comment icons identify three types of information, as the following tabledescribes. This information always appears in italics.

    Feature, Product, and Platform Icons

    Feature, product, and platform icons identify paragraphs that containfeature-specific, product-specific, or platform-specific information.

    Icon Label Description

    Warning: Identifies paragraphs that contain vital instructions,cautions, or critical information

    Important: Identifies paragraphs that contain significantinformation about the feature or operation that isbeing described

    Tip: Identifies paragraphs that offer additional details orshortcuts for the functionality that is being described

    Icon Description

    Identifies information that is specific to C user-definedroutines (UDRs)

    Identifies information that is specific to DB-Access

    Identifies information that is specific to Informix ESQL/C

    (1 of 2)

    C

    DB

    E/C

    12 Informix Guide to SQL: Syntax

  • Icon Conventions

    These icons can apply to an entire section or to one or more paragraphswithin a section. If an icon appears next to a section heading, the informationthat applies to the indicated feature, product, or platform ends at the nextheading at the same or higher level. A ♦ symbol indicates the end of feature-,product-, or platform-specific information that appears in one or moreparagraphs within a section.

    Identifies information that is specific to external routines,that is, UDRs written in both C and Java.

    Identifies information that relates to the Informix GlobalLanguage Support (GLS) feature

    Identifies information that is specific to Informix DynamicServer 2000

    Identifies information that is specific to UDRs written inJava

    Identifies information that is specific to SQL Editor, whichis a component of Informix Enterprise Command Centerfor Dynamic Server

    Identifies information that is specific to UNIX platforms

    Identifies information that is specific to the Windows NTenvironment

    Identifies information or syntax that is specific to InformixExtended Parallel Server

    Icon Description

    (2 of 2)

    Ext

    GLS

    IDS

    Java

    SQLE

    UNIX

    WIN NT

    XPS

    Introduction 13

  • Syntax Conventions

    Compliance Icons

    Compliance icons indicate paragraphs that provide guidelines for complyingwith a standard.

    These icons can apply to an entire section or to one or more paragraphswithin a section. If an icon appears next to a section heading, the informationthat applies to the indicated feature, product, or platform ends at the nextheading at the same or higher level. A ♦ symbol indicates the end of feature-,product-, or platform-specific information that appears within one or moreparagraphs within a section.

    Syntax ConventionsThis section describes conventions for syntax diagrams. Each diagramdisplays the sequences of required and optional keywords, terms, andsymbols that are valid in a given statement or segment, as Figure 1 shows.

    Each syntax diagram begins at the upper-left corner and ends at the upper-right corner with a vertical terminator. Between these points, any path thatdoes not stop or reverse direction describes a possible form of the statement.

    Icon Description

    Identifies information that is specific to an ANSI-compliantdatabase

    Identifies functionality that conforms to X/Open

    Identifies information or syntax that is an Informixextension to ANSI SQL-92 entry-level standard SQL

    ANSI

    X/O

    +

    Figure 1Example of a Simple Syntax Diagram

    SET LOG

    BUFFERED

    14 Informix Guide to SQL: Syntax

  • Syntax Conventions

    Syntax elements in a path represent terms, keywords, symbols, and segmentsthat can appear in your statement. The path always approaches elementsfrom the left and continues to the right, except in the case of separators inloops. For separators in loops, the path approaches counterclockwise. Unlessotherwise noted, at least one blank character separates syntax elements.

    Elements That Can Appear on the Path

    You might encounter one or more of the following elements on a path.

    Element Description

    KEYWORD A word in UPPERCASE letters is a keyword. You mustspell the word exactly as shown; however, you can useeither uppercase or lowercase letters.

    ( . , ; @ + * - / ) Punctuation and other nonalphanumeric charactersare literal symbols that you must enter exactly asshown.

    ' ' Single quotes are literal symbols that you must enteras shown.

    variable A word in italics represents a value that you mustsupply. A table immediately following the diagramexplains the value.

    A reference in a box represents a subdiagram. Imaginethat the subdiagram is spliced into the main diagramat this point. When a page number is not specified, thesubdiagram appears on the same page.

    A reference in a box in the upper-right corner of asubdiagram refers to the next higher-level diagram ofwhich this subdiagram is a member.

    An icon is a warning that this path is valid only forsome products, or only under certain conditions.Characters on the icons indicate what products orconditions support the path.

    These icons might appear in a syntax diagram:

    (1 of 3)

    ADDClausep. 3-288

    ADD Clause

    Back to ADD Clausep. 1-14

    E/C

    Introduction 15

  • Syntax Conventions

    This path is valid only for C user-defined routines(UDRs).

    This path is valid only for DB-Access.

    This path is valid only for Informix ESQL/C.

    This path is valid only for external routines, that is,UDRs written in C and Java.

    This path is recommended only if you use a nonde-fault locale.

    This path is valid only for UDRs written in Java.

    This path is valid only for Dynamic Server.

    This path is valid only if you are using Informix StoredProcedure Language (SPL).

    This path is valid only for Extended Parallel Server.

    This path is an Informix extension to ANSI SQL-92entry-level standard SQL. If you initiate Informixextension checking and include this syntax branch,you receive a warning. If you have set theDBANSIWARN environment variable at compile time,or have used the -ansi compile flag, you receivewarnings at compile time. If you have DBANSIWARNset at runtime, or if you compiled with the -ansi flag,warning flags are set in the sqlwarn structure. TheInformix extension warnings tend to be conservative.Sometimes the warnings appear even when a syntaxpath conforms to the ANSI standard.

    Element Description

    (2 of 3)

    C

    DB

    E/C

    Ext

    GLS

    Java

    IDS

    SPL

    XPS

    +

    16 Informix Guide to SQL: Syntax

  • Syntax Conventions

    A shaded option is the default action.

    Syntax within a pair of arrows is a subdiagram.

    The vertical line terminates the syntax diagram.

    A branch below the main path indicates an optionalpath. (Any term on the main path is required, unlessa branch can circumvent it.)

    A set of multiple branches indicates that a choiceamong more than two different paths is available.

    A loop indicates a path that you can repeat.Punctuation along the top of the loop indicates theseparator symbol for list items. If no symbol appears,a blank space is the separator.

    A gate ( ) on a path indicates that you can only usethat path the indicated number of times, even if it ispart of a larger loop. You can specify size no more thanthree times within this statement segment.

    Element Description

    (3 of 3)

    ALL

    NOT

    NULLIS

    ERROR

    WARNING

    NOT FOUND

    statement

    variable

    ,

    size

    ,

    3

    3

    Introduction 17

  • Syntax Conventions

    How to Read a Syntax Diagram

    Figure 2 shows a syntax diagram that uses most of the path elements that theprevious table lists.

    To use this diagram to construct a statement, start at the top left with thekeyword DELETE FROM. Follow the diagram to the right, proceeding throughthe options that you want.

    Figure 2 illustrates the following steps:

    1. Type DELETE FROM.

    2. You can delete a table, view, or synonym:

    ■ Type the table name, view name, or synonym, as you desire.

    ■ You can type WHERE to limit the rows to delete.

    ■ If you type WHERE and you are using DB-Access or the SQL Editor,you must include the Condition clause to specify a condition todelete. To find the syntax for specifying a condition, go to the“Condition” segment on the specified page.

    ■ If you are using ESQL/C, you can include either the Conditionclause to delete a specific condition or the CURRENT OF cursorclause to delete a row from the table.

    3. Follow the diagram to the terminator.

    Your DELETE statement is complete.

    Figure 2Example of a Syntax Diagram

    Conditionp. 4-5

    DELETE FROM

    WHERE

    CURRENT OF cursor

    view

    synonym

    table

    E/C

    18 Informix Guide to SQL: Syntax

  • Sample-Code Conventions

    Sample-Code ConventionsExamples of SQL code occur throughout this manual. Except where noted,the code is not specific to any single Informix application development tool.If only SQL statements are listed in the example, they are not delimited bysemicolons. For instance, you might see the code in the following example:

    CONNECT TO stores_demo...

    DELETE FROM customerWHERE customer_num = 121

    ...

    COMMIT WORKDISCONNECT CURRENT

    To use this SQL code for a specific product, you must apply the syntax rulesfor that product. For example, if you are using DB-Access, you must delimitmultiple statements with semicolons. If you are using an SQL API, you mustuse EXEC SQL at the start of each statement and a semicolon (or other appro-priate delimiter) at the end of the statement.

    Tip: Ellipsis points in a code example indicate that more code would be added in afull application, but it is not necessary to show it to describe the concept beingdiscussed.

    For detailed directions on using SQL statements for a particular applicationdevelopment tool or SQL API, see the manual for your product.

    Additional DocumentationFor additional information, you might want to refer to the following types ofdocumentation:

    ■ On-line manuals

    ■ Printed manuals

    ■ On-line help

    ■ Error message documentation

    ■ Documentation notes, release notes, and machine notes

    ■ Related reading

    Introduction 19

  • On-Line Manuals

    On-Line ManualsAn Answers OnLine CD that contains Informix manuals in electronic formatis provided with your Informix products. You can install the documentationor access it directly from the CD. For information about how to install, read,and print on-line manuals, see the installation insert that accompaniesAnswers OnLine.

    Informix on-line manuals are also available on the following Web site:

    www.informix.com/answers

    Printed ManualsTo order printed manuals, call 1-800-331-1763 or send email [email protected]. Please provide the following information whenyou place your order:

    ■ The documentation that you need

    ■ The quantity that you need

    ■ Your name, address, and telephone number

    On-Line HelpInformix provides on-line help with each graphical user interface (GUI) thatdisplays information about those interfaces and the functions that theyperform. Use the help facilities that each GUI provides to display the on-linehelp.

    Error Message DocumentationInformix software products provide ASCII files that contain all of theInformix error messages and their corrective actions.

    WIN NT

    20 Informix Guide to SQL: Syntax

  • Documentation Notes, Release Notes, Machine Notes

    To read error messages and corrective actions on UNIX, use one of thefollowing utilities.

    To read error messages and corrective actions in Windows environments, usethe Informix Find Error utility. To display this utility, chooseStart➞Programs➞Informix from the Task Bar. ♦

    Instructions for using the preceding utilities are available in AnswersOnLine. Answers OnLine also provides a listing of error messages andcorrective actions in HTML format.

    Documentation Notes, Release Notes, Machine NotesIn addition to printed documentation, the following sections describe the on-line files that supplement the information in this manual. Please examinethese files before you begin using your database server. They contain vitalinformation about application and performance issues.

    On UNIX platforms, the following on-line files appear in the$INFORMIXDIR/release/en_us/0333 directory. Replace x.y in the filenameswith the version number of your database server.

    Utility Description

    finderr Displays error messages on line

    rofferr Formats error messages for printing

    On-Line File Purpose

    SQLDOC_x.y The documentation-notes file for your version of this manualdescribes topics that are not covered in the manual or that weremodified since publication.

    SERVERS_x.y The release-notes file describes feature differences from earlierversions of Informix products and how these differences mightaffect current products. This file also contains information aboutany known problems and their workarounds.

    IDS_9.2 orXPS_x.y

    The machine-notes file describes any special actions that youmust take to configure and use Informix products on yourcomputer. Machine notes are named for the product described.

    UNIX

    WIN NT

    UNIX

    Introduction 21

  • Related Reading

    The following items appear in the Informix folder. To display this folder,choose Start➞Programs➞Informix from the Task Bar.

    Machine notes do not apply to Windows environments. ♦

    Related ReadingFor a list of publications that provide an introduction to database servers andoperating-system platforms, refer to your Getting Started manual.

    Compliance with Industry StandardsThe American National Standards Institute (ANSI) has established a set ofindustry standards for SQL. Informix SQL-based products are fully compliantwith SQL-92 Entry Level (published as ANSI X3.135-1992), which is identicalto ISO 9075:1992. In addition, many features of Informix database serverscomply with the SQL-92 Intermediate and Full Level and X/Open SQL CAE(common applications environment) standards.

    Program Group Item Description

    Documentation Notes This item includes additions or corrections to manuals,along with information about features that might not becovered in the manuals or that have been modified sincepublication.

    Release Notes This item describes feature differences from earlierversions of Informix products and how these differ-ences might affect current products. This file alsocontains information about any known problems andtheir workarounds.

    WIN NT

    22 Informix Guide to SQL: Syntax

  • Informix Welcomes Your Comments

    Informix Welcomes Your CommentsLet us know what you like or dislike about our manuals. To help us withfuture versions of our manuals, we want to know about any corrections orclarifications that you would find useful. Include the following information:

    ■ The name and version of the manual that you are using

    ■ Any comments that you have about the manual

    ■ Your name, address, and phone number

    Send electronic mail to us at the following address:

    [email protected]

    The doc alias is reserved exclusively for reporting errors and omissions in ourdocumentation.

    We appreciate your suggestions.

    Introduction 23

  • 1Chapter

    Overview of SQL Syntax

    In This Chapter . . . . . . . . . . . . . . . . . . . . 1-3

    How to Enter SQL Statements . . . . . . . . . . . . . . . 1-4

    How to Enter SQL Comments . . . . . . . . . . . . . . . 1-6

    Categories of SQL Statements . . . . . . . . . . . . . . . 1-9

    ANSI Compliance and Extensions . . . . . . . . . . . . . 1-13

  • 1-2 Infor

    mix Guide to SQL: Syntax

  • In This ChapterThis chapter provides information about how to use the SQL statements, SPLstatements, and segments that are discussed in the later chapters of this book.It is organized into the following sections.

    Section Starting Page Scope

    “How to EnterSQL Statements”

    1-4 This section shows how to use thestatement diagrams and descriptions toenter SQL statements correctly.

    “How to EnterSQL Comments”

    1-6 This section shows how to entercomments for SQL statements.

    “Categories of SQLStatements”

    1-9 This section lists SQL statements byfunctional category.

    “ANSICompliance andExtensions”

    1-13 This section lists SQL statements bydegree of ANSI compliance.

    Overview of SQL Syntax 1-3

  • How to Enter SQL Statements

    How to Enter SQL StatementsThe purpose of the statement descriptions in this manual is to help you toenter SQL statements successfully. Each statement description includes thefollowing information:

    ■ A brief introduction that explains the purpose of the statement

    ■ A syntax diagram that shows how to enter the statement correctly

    ■ A syntax table that explains each input parameter in the syntaxdiagram

    ■ Rules of usage, including examples that illustrate these rules

    If a statement consists of multiple clauses, the statement description providesthe same set of information for each clause.

    Each statement description concludes with references to related informationin this manual and other manuals.

    The major aids for entering SQL statements include:

    ■ the combination of the syntax diagram and syntax table.

    ■ the examples of syntax that appear in the rules of usage.

    ■ the references to related information.

    Using Syntax Diagrams and Syntax TablesBefore you try to use the syntax diagrams in this chapter, it is helpful to readthe “Syntax Conventions” on page 14 of the Introduction. This section is thekey to understanding the syntax diagrams in the statement descriptions.

    The Syntax Conventions section explains the elements that can appear in asyntax diagram and the paths that connect the elements to each other. Thissection also includes a sample syntax diagram that illustrates the majorelements of all syntax diagrams. The narrative that follows the samplediagram shows how to read the diagram in order to enter the statementsuccessfully.

    1-4 Informix Guide to SQL: Syntax

  • How to Enter SQL Statements

    When a syntax diagram within a statement description includes inputparameters, the syntax diagram is followed by a syntax table that shows howto enter the parameters without generating errors. Each syntax table includesthe following columns:

    ■ The Elements column lists the name of each parameter as it appearsin the syntax diagram.

    ■ The Purpose column briefly states the purpose of the parameter. Ifthe parameter has a default value, it is listed in this column.

    ■ The Restrictions column summarizes the restrictions on theparameter, such as acceptable ranges of values.

    ■ The Syntax column points to the SQL segment that gives the detailedsyntax for the parameter.

    Using ExamplesTo understand the main syntax diagram and subdiagrams for a statement,study the examples of syntax that appear in the rules of usage for eachstatement. These examples have two purposes:

    ■ To show how to accomplish particular tasks with the statement or itsclauses

    ■ To show how to use the syntax of the statement or its clauses in aconcrete way

    Tip: An efficient way to understand a syntax diagram is to find an example of thesyntax and compare it with the keywords and parameters in the syntax diagram. Bymapping the concrete elements of the example to the abstract elements of the syntaxdiagram, you can understand the syntax diagram and use it more effectively.

    For an explanation of the conventions used in the examples in this manual,see “Sample-Code Conventions” on page 19 of the Introduction.

    Overview of SQL Syntax 1-5

  • How to Enter SQL Comments

    Using Related InformationFor help in understanding the concepts and terminology in the SQLstatement description, check the “Related Information” section at the end ofeach statement.

    This section points to related information in this manual and other manualsthat helps you to understand the statement in question. The section providessome or all of the following information:

    ■ The names of related statements that might contain a fullerdiscussion of topics in this statement

    ■ The titles of other manuals that provide extended discussions oftopics in this statement

    Tip: If you do not have extensive knowledge and experience with SQL, the “InformixGuide to SQL: Tutorial” gives you the basic SQL knowledge that you need to under-stand and use the statement descriptions in this manual.

    How to Enter SQL CommentsYou can add comments to clarify the purpose or effect of particular SQL state-ments. You can also use comment symbols during program development todisable selected statements without deleting them from your source code.

    Your comments can help you or others to understand the role of thestatement within a program, SPL routine, or command file. The codeexamples in this manual sometimes include comments that clarify the role ofan SQL statement within the code.

    The following table shows the SQL comment symbols that you can enter inyour code. A Y in a column signifies that you can use the symbol with theproduct or database type named in the column heading. An N in a columnsignifies that you cannot use the symbol with the product or database typethat the column heading names.

    1-6 Informix Guide to SQL: Syntax

  • How to Enter SQL Comments

    If the product that you are using supports both comment symbols, yourchoice of a comment symbol depends on your requirements for ANSIcompliance:

    ■ The double dash (--) complies with the ANSI SQL standard.

    ■ Braces ({}) are an Informix extension to the standard.

    If ANSI compliance is not an issue, your choice of comment symbols is a mat-ter of personal preference. ♦

    In DB-Access, you can use either comment symbol when you enter SQL state-ments with the SQL editor and when you create SQL command files with theSQL editor or a system editor. An SQL command file is an operating-systemfile that contains one or more SQL statements. Command files are also knownas command scripts. For more information about command files, see thediscussion of command scripts in the Informix Guide to SQL: Tutorial. Forinformation on how to create and modify command files with the SQL editoror a system editor in DB-Access, see the DB-Access User’s Manual. ♦

    You can use either comment symbol in any line of an SPL routine. See thediscussion of how to comment and document an SPL routine in the InformixGuide to SQL: Tutorial. ♦

    CommentSymbol ESQL/C

    SPLRoutine DB-Access

    ANSI-CompliantDatabases

    DatabasesThat AreNot ANSICompliant Description

    doubledash(--)

    Y Y Y Y Y The double dash precedes thecomment. The double dash cancomment only a single line. Tocomment more than one line, you mustput the double dash at the beginning ofeach comment line.

    braces({})

    N Y Y Y Y Braces enclose the comment. The {precedes the comment, and the }follows the comment. You can usebraces for single-line comments or formultiple-line comments. Commentscannot be nested.

    ANSI

    DB

    SPL

    Overview of SQL Syntax 1-7

  • How to Enter SQL Comments

    In ESQL/C, you can use the double dash (--) to comment SQL statements. Forfurther information on the use of SQL comment symbols and language-specific comment symbols in ESQL/C programs, see the Informix ESQL/CProgrammer’s Manual. ♦

    Examples of SQL Comment SymbolsSome simple examples can help to illustrate the different ways to use the SQLcomment symbols.

    Examples of the Double-Dash Symbol

    The following example shows the use of the double dash (--) to comment anSQL statement. In this example, the comment appears on the same line as thestatement.

    SELECT * FROM customer -- Selects all columns and rows

    In the following example, the user enters the same SQL statement and thesame comment as in the preceding example, but the user places the commenton a line by itself:

    SELECT * FROM customer-- Selects all columns and rows

    In the following example, the user enters the same SQL statement as in thepreceding example but now enters a multiple-line comment:

    SELECT * FROM customer-- Selects all columns and rows-- from the customer table

    Examples of the Braces Symbols

    The following example shows the use of braces ({}) to comment an SQLstatement. In this example, the comment appears on the same line as thestatement.

    SELECT * FROM customer {Selects all columns and rows}

    E/C

    DB

    SPL

    1-8 Informix Guide to SQL: Syntax

  • Categories of SQL Statements

    In the following example, the user enters the same SQL statement and thesame comment as in the preceding example but places the comment on a lineby itself:

    SELECT * FROM customer{Selects all columns and rows}

    In the following example, the user enters the same SQL statement as in thepreceding example but enters a multiple-line comment:

    SELECT * FROM customer{Selects all columns and rows from the customer table}

    Non-ASCII Characters in SQL CommentsYou can enter non-ASCII characters (including multibyte characters) in SQLcomments if your locale supports a code set with the non-ASCII characters.For further information on the GLS aspects of SQL comments, see the InformixGuide to GLS Functionality.

    Categories of SQL StatementsSQL statements are divided into the following categories:

    ■ Data definition statements

    ■ Data manipulation statements

    ■ Cursor manipulation statements

    ■ Cursor optimization statements

    ■ Dynamic management statements

    ■ Data access statements

    ■ Data integrity statements

    ■ Optimization statements

    ■ Routine Definition statements

    ■ Auxiliary statements

    ■ Client/server connection statements

    ■ Optical subsystem statements

    The specific statements for each category are as follows.

    GLS

    Overview of SQL Syntax 1-9

  • Categories of SQL Statements

    Data Definition Statements

    Data Manipulation Statements

    Cursor Manipulation Statements

    ALTER FRAGMENTALTER FUNCTIONALTER INDEXALTER PROCEDUREALTER ROUTINEALTER TABLECLOSE DATABASECREATE AGGREGATECREATE CASTCREATE DATABASECREATE DISTINCT TYPECREATE EXTERNAL TABLECREATE INDEXCREATE OPAQUE TYPECREATE PROCEDURECREATE PROCEDURE FROMCREATE ROLECREATE ROW TYPECREATE SCHEMACREATE SYNONYMCREATE TABLE

    CREATE TEMPORARY TABLECREATE TRIGGERCREATE VIEWDATABASEDROP AGGREGATEDROP CASTDROP DATABASEDROP INDEXDROP PROCEDUREDROP ROLEDROP ROW TYPEDROP SYNONYMDROP TABLEDROP TRIGGERDROP VIEWRENAME COLUMNRENAME DATABASERENAME TABLETRUNCATE

    DELETEINSERTLOAD

    SELECTUNLOADUPDATE

    CLOSEDECLAREFETCHFLUSH

    FREEOPENPUTSET AUTOFREE

    1-10 Informix Guide to SQL: Syntax

  • Categories of SQL Statements

    Cursor Optimization Statements

    Dynamic Management Statements

    Data Access Statements

    Data Integrity Statements

    Optimization Statements

    SET AUTOFREESET DEFERRED_PREPARE

    ALLOCATE COLLECTIONALLOCATE DESCRIPTORALLOCATE ROWDEALLOCATE COLLECTIONDEALLOCATE DESCRIPTORDEALLOCATE ROWDESCRIBE

    EXECUTEEXECUTE IMMEDIATEFREEGET DESCRIPTORPREPARESET DEFERRED_PREPARESET DESCRIPTOR

    GRANTGRANT FRAGMENTLOCK TABLEREVOKEREVOKE FRAGMENTSET ISOLATION

    SET LOCK MODESET ROLESET SESSION AUTHORIZATIONSET TRANSACTIONSET TRANSACTION MODEUNLOCK TABLE

    BEGIN WORKCOMMIT WORKROLLBACK WORKSET DATABASE OBJECT MODESET LOG

    SET PLOAD FILESET TRANSACTION MODESTART VIOLATIONS TABLESTOP VIOLATIONS TABLE

    SET EXPLAINSET OPTIMIZATIONSET PDQPRIORITYSET RESIDENCY

    SET SCHEDULE LEVELSET STATEMENT CACHEUPDATE STATISTICS

    Overview of SQL Syntax 1-11

  • Categories of SQL Statements

    Routine Definition Statements

    Auxiliary Statements

    Client/Server Connection Statements

    Optical Subsystem Statements

    Important: Optical Subsystem statements are described in the “Guide to the OpticalSubsystem.”

    ALTER FUNCTIONALTER PROCEDUREALTER ROUTINECREATE FUNCTIONCREATE FUNCTION FROMCREATE PROCEDURECREATE PROCEDURE FROM

    CREATE ROUTINE FROMDROP FUNCTIONDROP PROCEDUREDROP ROUTINEEXECUTE FUNCTIONEXECUTE PROCEDURESET DEBUG FILE TO

    INFOOUTPUTGET DIAGNOSTICS

    SET DATASKIPWHENEVER

    CONNECTDISCONNECT

    SET CONNECTION

    IDS

    ALTER OPTICAL CLUSTERCREATE OPTICAL CLUSTERDROP OPTICAL CLUSTER

    RELEASERESERVESET MOUNTING TIMEOUT

    1-12 Informix Guide to SQL: Syntax

  • ANSI Compliance and Extensions

    ANSI Compliance and ExtensionsThe following lists show statements that are compliant with the ANSI SQL-92standard at the entry level, statements that are ANSI compliant but includeInformix extensions, and statements that are Informix extensions to the ANSIstandard.

    ANSI-Compliant Statements

    ANSI-Compliant Statements with Informix Extensions

    CLOSECOMMIT WORKROLLBACK WORK

    SET SESSION AUTHORIZATIONSET TRANSACTION

    CREATE SCHEMA AUTHORIZATIONCREATE TABLECREATE TEMPORARY TABLECREATE VIEWDECLAREDELETEEXECUTEFETCH

    GRANTINSERTOPENSELECTSET CONNECTIONUPDATEWHENEVER

    Overview of SQL Syntax 1-13

  • ANSI Compliance and Extensions

    Statements That Are Extensions to the ANSI StandardALLOCATE DESCRIPTORALTER FRAGMENTALTER FUNCTIONALTER INDEXALTER OPTICAL CLUSTERALTER PROCEDUREALTER ROUTINEALTER TABLEBEGIN WORKCLOSE DATABASECONNECTCREATE AGGREGATECREATE DATABASECREATE EXTERNAL TABLECREATE INDEXCREATE OPTICAL CLUSTERCREATE PROCEDURECREATE PROCEDURE FROMCREATE ROLECREATE SYNONYMCREATE TRIGGERDATABASEDEALLOCATE DESCRIPTORDESCRIBEDISCONNECTDROP AGGREGATEDROP DATABASEDROP INDEXDROP OPTICAL CLUSTERDROP PROCEDUREDROP ROLEDROP SYNONYMDROP TABLEDROP TRIGGERDROP VIEWEXECUTE IMMEDIATEEXECUTE PROCEDUREFLUSHFREEGET DESCRIPTORGET DIAGNOSTICS

    GRANT FRAGMENTINFOLOADLOCK TABLEOUTPUTPREPAREPUTRELEASERENAME COLUMNRENAME DATABASERENAME TABLERESERVEREVOKEREVOKE FRAGMENTSET AUTOFREESET DATABASE OBJECT MODESET DATASKIPSET DEBUG FILE TOSET DEFERRED_PREPARESET DESCRIPTORSET EXPLAINSET ISOLATIONSET LOCK MODESET LOGSET MOUNTING TIMEOUTSET OPTIMIZATIONSET PDQPRIORITYSET PLOAD FILESET RESIDENCYSET ROLESET SCHEDULE LEVELSET STATEMENT CACHESET TRANSACTIONSET TRANSACTION MODESTART VIOLATIONS TABLESTOP VIOLATIONS TABLETRUNCATEUNLOADUNLOCK TABLEUPDATE STATISTICS

    1-14 Informix Guide to SQL: Syntax

  • 2Chapter

    SQL Statements

    In This Chapter . . . . . . . . . . . . . . . . . . . . 2-5ALLOCATE COLLECTION . . . . . . . . . . . . . . 2-6ALLOCATE DESCRIPTOR. . . . . . . . . . . . . . . 2-8ALLOCATE ROW . . . . . . . . . . . . . . . . . . 2-10ALTER FRAGMENT . . . . . . . . . . . . . . . . . 2-12ALTER FUNCTION . . . . . . . . . . . . . . . . . 2-41ALTER INDEX . . . . . . . . . . . . . . . . . . . 2-44ALTER PROCEDURE . . . . . . . . . . . . . . . . 2-48ALTER ROUTINE . . . . . . . . . . . . . . . . . . 2-51ALTER TABLE . . . . . . . . . . . . . . . . . . . 2-55BEGIN WORK . . . . . . . . . . . . . . . . . . . 2-91CLOSE. . . . . . . . . . . . . . . . . . . . . . 2-94CLOSE DATABASE . . . . . . . . . . . . . . . . . 2-98COMMIT WORK . . . . . . . . . . . . . . . . . . 2-100CONNECT . . . . . . . . . . . . . . . . . . . . 2-103CREATE AGGREGATE . . . . . . . . . . . . . . . . 2-115CREATE CAST . . . . . . . . . . . . . . . . . . . 2-119CREATE DATABASE. . . . . . . . . . . . . . . . . 2-124CREATE DISTINCT TYPE . . . . . . . . . . . . . . . 2-127CREATE EXTERNAL TABLE . . . . . . . . . . . . . . 2-131CREATE FUNCTION . . . . . . . . . . . . . . . . 2-146CREATE FUNCTION FROM . . . . . . . . . . . . . . 2-155CREATE INDEX . . . . . . . . . . . . . . . . . . 2-157CREATE OPAQUE TYPE . . . . . . . . . . . . . . . 2-186CREATE OPCLASS . . . . . . . . . . . . . . . . . 2-193CREATE PROCEDURE . . . . . . . . . . . . . . . . 2-199CREATE PROCEDURE FROM . . . . . . . . . . . . . 2-209

  • 2-2 Infor

    CREATE ROLE . . . . . . . . . . . . . . . . . . . 2-212CREATE ROUTINE FROM . . . . . . . . . . . . . . . 2-214CREATE ROW TYPE . . . . . . . . . . . . . . . . . 2-216CREATE SCHEMA . . . . . . . . . . . . . . . . . 2-222CREATE SYNONYM . . . . . . . . . . . . . . . . . 2-226CREATE TABLE . . . . . . . . . . . . . . . . . . 2-230CREATE Temporary TABLE . . . . . . . . . . . . . . 2-286CREATE TRIGGER . . . . . . . . . . . . . . . . . 2-296CREATE VIEW . . . . . . . . . . . . . . . . . . . 2-334DATABASE . . . . . . . . . . . . . . . . . . . . 2-341DEALLOCATE COLLECTION . . . . . . . . . . . . . 2-343DEALLOCATE DESCRIPTOR . . . . . . . . . . . . . . 2-345DEALLOCATE ROW . . . . . . . . . . . . . . . . . 2-347DECLARE . . . . . . . . . . . . . . . . . . . . 2-349DELETE . . . . . . . . . . . . . . . . . . . . . 2-373DESCRIBE . . . . . . . . . . . . . . . . . . . . 2-382DISCONNECT . . . . . . . . . . . . . . . . . . . 2-389DROP AGGREGATE . . . . . . . . . . . . . . . . . 2-393DROP CAST . . . . . . . . . . . . . . . . . . . . 2-395DROP DATABASE. . . . . . . . . . . . . . . . . . 2-397DROP FUNCTION . . . . . . . . . . . . . . . . . 2-399DROP INDEX . . . . . . . . . . . . . . . . . . . 2-401DROP OPCLASS . . . . . . . . . . . . . . . . . . 2-403DROP PROCEDURE . . . . . . . . . . . . . . . . . 2-404DROP ROLE . . . . . . . . . . . . . . . . . . . . 2-407DROP ROUTINE . . . . . . . . . . . . . . . . . . 2-408DROP ROW TYPE . . . . . . . . . . . . . . . . . . 2-410DROP SYNONYM . . . . . . . . . . . . . . . . . . 2-412DROP TABLE . . . . . . . . . . . . . . . . . . . 2-413DROP TRIGGER . . . . . . . . . . . . . . . . . . 2-417DROP TYPE . . . . . . . . . . . . . . . . . . . . 2-418DROP VIEW . . . . . . . . . . . . . . . . . . . . 2-420EXECUTE. . . . . . . . . . . . . . . . . . . . . 2-422EXECUTE FUNCTION . . . . . . . . . . . . . . . . 2-434EXECUTE IMMEDIATE . . . . . . . . . . . . . . . . 2-441EXECUTE PROCEDURE . . . . . . . . . . . . . . . 2-444

    mix Guide to SQL: Syntax

  • FETCH . . . . . . . . . . . . . . . . . . . . . . 2-455FLUSH . . . . . . . . . . . . . . . . . . . . . . 2-469FREE . . . . . . . . . . . . . . . . . . . . . . . 2-472GET DESCRIPTOR . . . . . . . . . . . . . . . . . . 2-475GET DIAGNOSTICS . . . . . . . . . . . . . . . . . 2-483GRANT . . . . . . . . . . . . . . . . . . . . . . 2-500GRANT FRAGMENT . . . . . . . . . . . . . . . . . 2-523INFO . . . . . . . . . . . . . . . . . . . . . . . 2-532INSERT . . . . . . . . . . . . . . . . . . . . . . 2-535LOAD . . . . . . . . . . . . . . . . . . . . . . 2-553LOCK TABLE . . . . . . . . . . . . . . . . . . . . 2-563OPEN. . . . . . . . . . . . . . . . . . . . . . . 2-566OUTPUT . . . . . . . . . . . . . . . . . . . . . 2-577PREPARE . . . . . . . . . . . . . . . . . . . . . 2-579PUT . . . . . . . . . . . . . . . . . . . . . . . 2-593RENAME COLUMN . . . . . . . . . . . . . . . . . 2-604RENAME DATABASE . . . . . . . . . . . . . . . . . 2-606RENAME TABLE. . . . . . . . . . . . . . . . . . . 2-607REVOKE . . . . . . . . . . . . . . . . . . . . . 2-610REVOKE FRAGMENT . . . . . . . . . . . . . . . . . 2-628ROLLBACK WORK . . . . . . . . . . . . . . . . . . 2-632SELECT . . . . . . . . . . . . . . . . . . . . . . 2-634SET AUTOFREE . . . . . . . . . . . . . . . . . . . 2-691SET CONNECTION. . . . . . . . . . . . . . . . . . 2-694SET Database Object Mode . . . . . . . . . . . . . . . 2-700SET DATASKIP . . . . . . . . . . . . . . . . . . . 2-709SET DEBUG FILE TO . . . . . . . . . . . . . . . . . 2-712SET DEFERRED_PREPARE . . . . . . . . . . . . . . . 2-715SET DESCRIPTOR . . . . . . . . . . . . . . . . . . 2-719SET EXPLAIN . . . . . . . . . . . . . . . . . . . . 2-730SET ISOLATION . . . . . . . . . . . . . . . . . . . 2-736SET LOCK MODE . . . . . . . . . . . . . . . . . . 2-742SET LOG . . . . . . . . . . . . . . . . . . . . . 2-745SET OPTIMIZATION . . . . . . . . . . . . . . . . . 2-747SET PDQPRIORITY . . . . . . . . . . . . . . . . . . 2-751SET PLOAD FILE . . . . . . . . . . . . . . . . . . 2-755

    SQL Statements 2-3

  • 2-4 Infor

    SET Residency . . . . . . . . . . . . . . . . . . . 2-756SET ROLE. . . . . . . . . . . . . . . . . . . . . 2-758SET SCHEDULE LEVEL . . . . . . . . . . . . . . . . . . 2-760SET SESSION AUTHORIZATION . . . . . . . . . . . . 2-761SET STATEMENT CACHE . . . . . . . . . . . . . . . 2-764SET TRANSACTION . . . . . . . . . . . . . . . . . 2-768SET Transaction Mode . . . . . . . . . . . . . . . . 2-774START VIOLATIONS TABLE . . . . . . . . . . . . . . 2-778STOP VIOLATIONS TABLE . . . . . . . . . . . . . . 2-800TRUNCATE . . . . . . . . . . . . . . . . . . . . 2-802UNLOAD . . . . . . . . . . . . . . . . . . . . . 2-805UNLOCK TABLE . . . . . . . . . . . . . . . . . . 2-813UPDATE . . . . . . . . . . . . . . . . . . . . . 2-815UPDATE STATISTICS . . . . . . . . . . . . . . . . 2-835WHENEVER. . . . . . . . . . . . . . . . . . . . 2-848

    mix Guide to SQL: Syntax

  • In This ChapterThis chapter gives comprehensive reference descriptions of SQL statements.The statement descriptions appear in alphabetical order. For an explanationof the structure of statement descriptions, see Chapter 1, “Overview of SQLSyntax.”

    SQL Statements 2-5

  • ALLOCATE COLLECTION

    ALLOCATE COLLECTIONUse the ALLOCATE COLLECTION statement to allocate memory for acollection variable.

    Use this statement with ESQL/C.

    Syntax

    UsageThe ALLOCATE COLLECTION statement allocates memory for a variable thatstores collection data. To create a collection variable for an ESQL/C program,perform the following steps:

    1. Declare the collection variable as a client collection variable in anESQL/C program.

    The collection variable can be a typed or untyped collection variable.

    2. Allocate memory for the collection variable with the ALLOCATECOLLECTION statement.

    The ALLOCATE COLLECTION statement sets SQLCODE (sqlca.sqlcode) tozero (0) if the memory allocation was successful and to a negative error codeif the allocation failed.

    You must explicitly release memory with the DEALLOCATE COLLECTIONstatement. Once you free the collection variable with the DEALLOCATECOLLECTION statement, you can reuse the collection variable.

    +

    IDS

    E/C

    Element Purpose Restrictions Syntaxvariable Name that identifies a typed or

    untyped collection variable forwhich to allocate memory

    The variable must be the nameof an unallocated ESQL/Ccollection host variable.

    Name must conformto language-specificrules for variablenames.

    variableALLOCATE COLLECTION

    2-6 Informix Guide to SQL: Syntax

  • ALLOCATE COLLECTION

    Tip: The ALLOCATE COLLECTION statement allocates memory for an ESQL/Ccollection variable only. To allocate memory for an ESQL/C row variable, use theALLOCATE ROW statement.

    Examples

    The following example shows how to allocate resources with the ALLOCATECOLLECTION statement for the untyped collection variable, a_set:

    EXEC SQL BEGIN DECLARE SECTION;client collection a_set;

    EXEC SQL END DECLARE SECTION;...

    EXEC SQL allocate collection :a_set;...

    The following example uses ALLOCATE COLLECTION to allocate resourcesfor a typed collection variable, a_typed_set:

    EXEC SQL BEGIN DECLARE SECTION;client collection set(integer not null) a_typed_set;

    EXEC SQL END DECLARE SECTION;...EXEC SQL allocate collection :a_typed_set;...

    Related InformationRelated examples: Refer to the collection variable example in PUT

    Related statements: ALLOCATE ROW and DEALLOCATE COLLECTION

    For a discussion of collection data types, see the Informix ESQL/CProgrammer’s Manual.

    SQL Statements 2-7

  • ALLOCATE DESCRIPTOR

    ALLOCATE DESCRIPTORUse the ALLOCATE DESCRIPTOR statement to allocate memory for a system-descriptor area. This statement creates a place in memory to hold informationthat a DESCRIBE statement obtains or to hold information about the WHEREclause of a statement.

    Use this statement with ESQL/C.

    Syntax

    +

    E/C

    Element Purpose Restrictions Syntaxdescriptor Quoted string that identifies a

    system-descriptor areaUse single quotes.

    String must represent the nameof an unallocated system-descriptor area.

    Quoted String,p. 4-260

    descriptor_var Host-variable name thatidentifies a system-descriptorarea

    Variable must contain the nameof an unallocated system-descriptor area.

    Name must conformto language-specificrules for variablenames.

    items Number of item descriptors inthe system-descriptor area

    The default value is 100.

    Value must be unsignedINTEGER greater than zero.

    Literal Number,p. 4-237

    items_var Host variable that contains thenumber of items

    Data type must be INTEGER orSMALLINT.

    Name must conformto language-specificrules for variablenames.

    descriptor_var WITH MAX

    'descriptor 'ALLOCATE DESCRIPTOR

    items

    items_var

    2-8 Informix Guide to SQL: Syntax

  • ALLOCATE DESCRIPTOR

    UsageThe ALLOCATE DESCRIPTOR statement creates a system-descriptor area. Asystem-descriptor area contains one or more fields called item descriptors.Each item descriptor holds a data value that the database server can receiveor send. The item descriptors also contain information about the data such astype, length, scale, precision, and nullability.

    If the name that you assign to a system-descriptor area matches the name ofan existing system-descriptor area, the database server returns an error. Ifyou free the descriptor with the DEALLOCATE DESCRIPTOR statement, youcan reuse the descriptor.

    A system-descriptor area holds information that a DESCRIBE...USING SQLDESCRIPTOR statement obtains or it holds information about the WHEREclause of a dynamically executed statement.

    WITH MAX Clause

    You can use the WITH MAX clause to indicate the maximum number of itemdescriptors you need. When you use this clause, the COUNT field is set to thenumber of items you specify. If you do not specify the WITH MAX clause, thedefault value of the COUNT field is 100. You can change the value of theCOUNT field with the SET DESCRIPTOR statement.

    The following examples show valid ALLOCATE DESCRIPTOR statements.Each example includes the WITH MAX clause. The first line uses embeddedvariable names to identify the system-descriptor area and to specify thedesired number of item descriptors. The second line uses a quoted string toidentify the system-descriptor area and an unsigned integer to specify thedesired number of item descriptors.

    EXEC SQL allocate descriptor :descname with max :occ;

    EXEC SQL allocate descriptor 'desc1' with max 3;

    Related InformationRelated statements: DEALLOCATE DESCRIPTOR, DECLARE, DESCRIBE,EXECUTE, FETCH, GET DESCRIPTOR, OPEN, PREPARE, PUT, and SETDESCRIPTOR

    For more information on system-descriptor areas, refer to the InformixESQL/C Programmer’s Manual.

    SQL Statements 2-9

  • ALLOCATE ROW

    ALLOCATE ROWUse the ALLOCATE ROW statement to allocate memory for a row variable.

    Use this statement with ESQL/C.

    Syntax

    UsageThe ALLOCATE ROW statement allocates memory for a variable that storesrow-type data. To create a row variable, perform the following steps in yourESQL/C program:

    1. Declare the row variable.

    The row variable can be a typed or untyped row variable.

    2. Allocate memory for the row variable with the ALLOCATE ROWstatement.

    The ALLOCATE ROW statement sets SQLCODE (sqlca.sqlcode) to zero (0) ifthe memory allocation was successful and to a negative error code if theallocation failed.

    You must explicitly release memory with the DEALLOCATE ROW statement.Once you free the row variable with the DEALLOCATE ROW statement, youcan reuse the row variable.

    Tip: The ALLOCATE ROW statement allocates memory for an ESQL/C row variableonly. To allocate memory for an ESQL/C collection variable, use the ALLOCATECOLLECTION statement.

    +

    IDS

    E/C

    Element Purpose Restrictions Syntaxvariable Name that identifies a typed or

    untyped row variable for whichto allocate memory

    The variable must be an unallo-cated ESQL/C row hostvariable.

    Name must conformto language-specificrules for variablenames.

    variableALLOCATE ROW

    2-10 Informix Guide to SQL: Syntax

  • ALLOCATE ROW

    When you use the same row variable in multiple calls without deallocatingit, a memory leak on the client computer results. Because there is no way todetermine if a pointer is valid when it is passed, ESQL/C assumes that it is notvalid and assigns it to a new memory location.

    Example

    The following example shows how to allocate resources with the ALLOCATEROW statement for the typed row variable, a_row:

    EXEC SQL BEGIN DECLARE SECTION;row (a int, b int) a_row;

    EXEC SQL END DECLARE SECTION;...EXEC SQL allocate row :a_row;

    Related InformationRelated statements: ALLOCATE COLLECTION and DEALLOCATE ROW

    For a discussion of complex types, see the Informix ESQL/C Programmer’sManual.

    SQL Statements 2-11

  • 2-12 Informix Guide to SQL: Syntax

    ALTER FRAGMENT

    ALTER FRAGMENTUse the ALTER FRAGMENT statement to alter the distribution strategy orstorage location of an existing table or index.

    Syntax

    +

    Element Purpose Restrictions Syntaxsurviving_index Index on which you execute the

    ALTER FRAGMENT statementThe index must exist at the timeyou execute the statement.

    Database ObjectName, p. 4-50

    surviving_table Table on which you execute theALTER FRAGMENT statement

    The table must exist at the timeyou execute the statement.

    For more information, see“Restrictions on When You CanUse the ALTER FRAGMENTStatement” on page 2-14.

    Database ObjectName, p. 4-50

    INITClausep. 2-27

    ALTER FRAGMENT ONATTACHClausep. 2-15

    DETACHClausep. 2-25

    MODIFYClausep. 2-38

    ADDClausep. 2-35

    DROPClausep. 2-37

    surviving_table

    surviving_indexINDEX

    TABLE

    IDS

    IDS

  • ALTER FRAGMENT

    UsageThe clauses of the ALTER FRAGMENT statement let you perform thefollowing tasks.

    The ALTER FRAGMENT statement applies only to table or index fragmentsthat are located at the current site (or cluster, for Extended Parallel Server).No remote information is accessed or updated.

    Warning: This statement can cause indexes to be dropped and rebuilt. Before under-taking alter operations, check corresponding sections in your “Performance Guide”to review effects and strategies

    General Privileges

    You must have the Alter or the DBA privilege to change the fragmentationstrategy of a table. You must have the Index or the DBA privilege to alter thefragmentation strategy of an index.

    Clause Purpose

    ATTACH Combines tables that contain identical table structures into a singlefragmented table.

    DETACH Detaches a table fragment or slice from a fragmentation strategyand places it in a new table.

    INIT Provides the following options:

    ■ Defines and initializes a fragmentation strategy on a table.

    ■ Creates a fragmentation strategy for tables.

    ■ Changes the order of evaluation of fragment expressions.

    ■ Alters the fragmentation strategy of an existing table or index.

    ■ Changes the storage location of an existing table.

    ADD Adds an additional fragment to an existing fragmentation list.

    DROP Drops an existing fragment from a fragmentation list.

    MODIFY Changes an existing fragmentation expression.

    SQL Statements 2-13

  • ALTER FRAGMENT

    Restrictions on When You Can Use the ALTER FRAGMENT Statement

    You cannot use the ALTER FRAGMENT statement on a temporary table, anexternal table, or a view.

    If your table or index is not already fragmented, the only clauses available toyou are INIT and ATTACH.

    You cannot use ALTER FRAGMENT on a typed table that is part of a tablehierarchy. ♦

    You cannot use the ALTER FRAGMENT statement on a generalized-key (GK)index. Also, you cannot use the ALTER FRAGMENT statement on any tablethat has a dependent GK index defined on it. In addition, you cannot use thisstatement on a table that has range fragmentation.

    If the surviving_table has hash fragmentation, the only clauses available areATTACH and INIT. ♦

    How Is the ALTER FRAGMENT Statement Executed?

    If your database uses logging, the ALTER FRAGMENT statement is executedwithin a single transaction. When the fragmentation strategy uses largenumbers of records, you might run out of log space or disk space. (Thedatabase server requires extra disk space for the operation; it later frees thedisk space).

    Making More Space

    When you run out of log space or disk space, try one of the followingprocedures to make more space available:

    ■ Turn off logging and turn it back on again at the end of the operation.This procedure indirectly requires a backup of the root dbspace.

    ■ Split the operations into multiple ALTER FRAGMENT statements,moving a smaller portion of records at each time.

    For information about log-space requirements and disk-space requirements,see your Administrator’s Guide. That guide also contains detailed instructionsabout how to turn off logging. For information about backups, refer to yourBackup and Restore Guide.

    IDS

    XPS

    2-14 Informix Guide to SQL: Syntax

  • ALTER FRAGMENT

    Determining the Number of Rows in the Fragment

    You can place as many rows into a fragment as the available space in thedbspace allows.

    To find out how many rows are in a fragment

    1. Run the UPDATE STATISTICS statement on the table. This step fills thesysfragments system catalog table with the current tableinformation.

    2. Query the sysfragments system catalog table to examine the npusedand nrows fields. The npused field gives you the number of datapages used in the fragment, and the nrows field gives you thenumber of rows in the fragment.

    ATTACH ClauseUse the ATTACH clause to combine tables that contain identical tablestructures into a fragmentation strategy.

    Important: Use the CREATE TABLE statement or the INIT clause of the ALTERFRAGMENT statement to create fragmented tables.

    ATTACHClause

    Back to ALTER FRAGMENTp. 2-12

    ATTACH 1 surviving_table

    consumed_table

    ,

    1

    dbspace

    AS expression

    BEFORE

    AFTER

    AS REMAINDER

    SQL Statements 2-15

  • ALTER FRAGMENT

    Element Purpose Restrictions Syntaxconsumed_table Table which loses its identity

    and becomes part of thesurviving table

    The table must exist at the timeyou execute the statement.

    The table cannot contain serialcolumns.

    The table cannot contain unique,referential, or primary-keyconstraints.

    The table must be nonfrag-mented (IDS only).

    See also, “General Restrictionsfor the ATTACH Clause” onpage 2-17.

    Database ObjectName, p. 4-50

    dbspace Dbspace that specifies wherethe consumed table expressionoccurs in the fragmentation list

    With a hybrid-fragmentedtable, dbspace identifies a set ofdbspaces (XPS only). See“Altering Hybrid-FragmentedTables” on page 2-19.

    The dbspace must exist at thetime you execute the statement.

    Identifier, p. 4-205

    expression Expression that defines whichrows are stored in a fragment

    The expression element cancontain only columns from thecurrent table and only datavalues from a single row.

    No subqueries, user-definedroutines, aggregates, or refer-ences to the fields of a row-typecolumn are allowed. In addition,the current, date and/or timebuilt-in functions are notallowed.

    Condition, p. 4-27,and Expression,p. 4-73

    surviving_table Table that survives theexecution of ALTER FRAGMENT

    The table must exist at the timeyou execute the statement.

    The table cannot contain anyconstraints.

    See also, “General Restrictionsfor the ATTACH Clause” onpage 2-17.

    Database ObjectName, p. 4-50

    2-16 Informix Guide to SQL: Syntax

  • ALTER FRAGMENT

    The ATTACH clause allows you to perform the following tasks:

    ■ Create a single fragmented table by combining two or more identi-cally-structured, nonfragmented tables

    (See “Combining Nonfragmented Tables to Create a FragmentedTable” on page 2-18.)

    ■ Attach one or more tables to a fragmented table

    (See “Attaching a Table to a Fragmented Table” on page 2-19.)

    Privileges

    You must be the DBA or the owner of the tables that are involved to use theATTACH clause.

    General Restrictions for the ATTACH Clause

    Any tables that you attach must have been created previously in separatedbspaces. You cannot attach the same table more than once.

    All consumed tables listed in the ATTACH clause must be identical instructure to the surviving table; that is, all column definitions must match.The number, names, data types, and relative position of the columns must beidentical.

    You cannot attach a fragmented table to another fragmented table. ♦

    Additional Restrictions on the ATTACH Clause Specific to XPS

    In addition to the general restrictions, every consumed table must be of thesame usage type as the surviving table. For information about how to specifythe usage type of a table, refer to “Usage-Type Options” on page 2-231.

    You cannot use the ATTACH clause in certain situations. The attach operationfails:

    ■ if the consumed tables contain data that belongs in some existingfragment of the surviving table.

    ■ if existing data in the surviving table would belong in a newfragment.

    IDS

    XPS

    SQL Statements 2-17

  • ALTER FRAGMENT

    In other words, you cannot use the ATTACH clause for data movementamong fragments. To perform this task, see the “INIT Clause” on page 2-27.

    Using the BEFORE, AFTER, and REMAINDER Options

    The BEFORE and AFTER options allow you to place a new fragment eitherbefore or after an existing dbspace. You cannot use the BEFORE and AFTERoptions when the distribution scheme is round-robin.

    When you attach a new fragment without an explicit BEFORE or AFTERoption, the database server places the added fragment at the end of thefragmentation list, unless a remainder fragment exists. If a remainderfragment exists, the new fragment is placed just before the remainderfragment. You cannot attach a new fragment after the remainder fragment.

    When you create or append to a hybrid-fragmented table, the positioningspecification (BEFORE, AFTER, or REMAINDER) applies to an entire dbslice.You can use any dbspace in a dbslice to identify the dbslice for the BEFORE orAFTER position. ♦

    Combining Nonfragmented Tables to Create a Fragmented Table

    When you transform tables with identical table structures into fragments ina single table, you allow the database server to manage the fragmentationinstead of allowing the application to manage the fragmentation. The distri-bution scheme can be round-robin or expression-based.

    To make a single, fragmented table from two or more identically-structured,nonfragmented tables, the ATTACH clause must contain the surviving tablein the attach list. The attach list is the list of tables in the ATTACH clause.

    To include a rowid column in the newly-created single, fragmented table,attach all tables first and then add the rowid with the ALTER TABLEstatement. ♦

    XPS

    IDS

    2-18 Informix Guide to SQL: Syntax

  • ALTER FRAGMENT

    Attaching a Table to a Fragmented Table

    To attach a nonfragmented table to an already fragmented table, thenonfragmented table must have been created in a separate dbspace and musthave the same table structure as the fragmented table. In the followingexample, a round-robin distribution scheme fragments the table cur_acct,and the table old_acct is a nonfragmented table that resides in a separatedbspace. The example shows how to attach old_acct to cur_acct:

    ALTER FRAGMENT ON TABLE cur_acct ATTACH old_acct

    When you attach one or more tables to a fragmented table, a consumed tablemust be nonfragmented. ♦

    When you attach one or more tables to a fragmented table, a consumed tablecan be nonfragmented or have hash fragmentation.

    If you specify a consumed_table that has hash fragmentation, the hash columnspecification must match that of the surviving_table and any otherconsumed_table involved in the attach operation. ♦

    Altering Hybrid-Fragmented Tables

    When you alter a hybrid-fragmented table with either an ATTACH orDETACH clause, you need specify only one dbspace to identify the entire setof dbspaces that are associated with a given expression in the base fragmen-tation strategy of the table.

    The set of dbspaces associated with an expression in the base fragmentationstrategy of the table might have been defined as one or more dbslices or adbspaces. For more information, see “Fragmenting by HYBRID” onpage 2-264.

    If you know the name of the dbslice, but not any of the dbspaces that itcomprises, you can name the first dbspace in the dbslice by adding .1 to thename of the dbslice. For example, if the dbslice were named dbsl1, you couldspecify dbsl1.1.

    IDS

    XPS

    XPS

    SQL Statements 2-19

  • ALTER FRAGMENT

    What Happens?

    After the attach executes, all consumed tables no longer exist. Anyconstraints (CHECK or NOT NULL) that were on the consumed tables also nolonger exist.

    You must reference the records that were in the consumed tables through thesurviving table.

    What Happens to Indexes?

    In a logging database, when the attach executes, the database server extendsany attached index on the surviving table according to the new fragmen-tation strategy of the surviving table. All rows in the consumed table aresubject to these automatically adjusted indexes. For information on whetherthe database server completely rebuilds the index on the surviving table orreuses an index that was on the consumed table, see your Performance Guide.

    In a nonlogging database, when the attach executes, the database server doesnot extend indexes on the surviving table according to the new fragmen-tation strategy of the surviving table. To extend the fragmentation strategy ofan attached index according to the new fragmentations strategy of thesurviving table, you must drop the index and recreate it on the survivingtable. ♦

    A detached index on the surviving table retains its same fragmentationstrategy. That is, a detached index does not automatically adjust to accom-modate the new fragmentation of the surviving table.

    For more information on what happens to indexes, see the discussion aboutaltering table fragments in your Performance Guide.

    What Happens to BYTE and TEXT Columns?

    Each BYTE and TEXT column in every table that is named in the ATTACHclause must have the same storage type, either blobspace or tblspace. If theBYTE or TEXT column is stored in a blobspace, the same column in all tablesmust be in the same blobspace. If the BYTE or TEXT column is stored in atblspace, the same column must be stored in a tblspace in all tables. ♦

    IDS

    IDS

    2-20 Informix Guide to SQL: Syntax

  • ALTER FRAGMENT

    In Extended Parallel Server, BYTE and TEXT columns are stored in separatefragments that are created for that purpose. If a table includes a BYTE or TEXTcolumn, the database server creates a separate, additional fragment in thesame dbspace as each regular table fragment. BYTE or TEXT columns arestored in the separate fragment that is associated with the regular tablefragment where a given row resides.

    When an attach occurs, BYTE and TEXT fragments of the consumed tablebecome part of the surviving table and continue to be associated with thesame rows and data fragments as they were before the attach. ♦

    What Happens to Triggers?

    When you attach tables, any triggers that are defined on the consumed tableno longer exist, and all rows in the consumed table are subject to the triggersthat are defined in the surviving table. That is, triggers on the surviving tablesurvive the ATTACH, but triggers on the consumed table are dropped.

    No triggers are activated with the ATTACH clause, but subsequent data-manipulation operations on the new rows can activate triggers.

    What Happens to Views?

    Views on the surviving table survive the ATTACH, but views on theconsumed table are dropped.

    What Happens with the Distribution Scheme?

    You can attach a nonfragmented table to a table with any type of supporteddistribution scheme. In general, the resulting table has the same fragmen-tation strategy as the prior fragmentation strategy