+ All Categories
Home > Documents > Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a...

Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a...

Date post: 28-Aug-2018
Category:
Upload: dangminh
View: 231 times
Download: 0 times
Share this document with a friend
284
Oracle SQL Developer Online Help Release 1.2 June 2007 This is a single PDF document containing the online help topics for Oracle SQL Developer. It is provided merely as a convenience; you are still encouraged to use the help within the SQL Developer user interface to obtain immediate and context-relevant information.
Transcript
Page 1: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle SQL DeveloperOnline Help

Release 1.2

June 2007

This is a single PDF document containing the online help topics for Oracle SQL Developer. It is provided merely as a convenience; you are still encouraged to use the help within the SQL Developer user interface to obtain immediate and context-relevant information.

Page 2: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Online Help, Release 1.2

Copyright © 2005, 2007, Oracle. All rights reserved.

Primary Author: Chuck Murray

The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.

The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose.

If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer Software--Restricted Rights (June 1987). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and we disclaim liability for any damages caused by such use of the Programs.

Oracle, JD Edwards, PeopleSoft, and Siebel are registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

The Programs may provide links to Web sites and access to content, products, and services from third parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites. You bear all risks associated with the use of such content. If you choose to purchase any products or services from a third party, the relationship is directly between you and the third party. Oracle is not responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of the agreement with the third party, including delivery of products or services and warranty obligations related to purchased products or services. Oracle is not responsible for any loss or damage of any sort that you may incur from dealing with any third party.

Page 3: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

iii

Contents

1 SQL Developer Concepts and Usage

1.1 SQL Developer User Interface................................................................................................... 1-21.1.1 Menus for SQL Developer.................................................................................................. 1-41.2 Database Objects ......................................................................................................................... 1-71.2.1 Database Links (Public and Private) ................................................................................. 1-71.2.2 Directories............................................................................................................................. 1-71.2.3 Functions............................................................................................................................... 1-81.2.4 Indexes................................................................................................................................... 1-81.2.5 Materialized Views.............................................................................................................. 1-91.2.6 Materialized View Logs ...................................................................................................... 1-91.2.7 Packages ................................................................................................................................ 1-91.2.8 Procedures ............................................................................................................................ 1-91.2.9 Recycle Bin......................................................................................................................... 1-101.2.10 Sequences ........................................................................................................................... 1-101.2.11 Synonyms (Public and Private) ...................................................................................... 1-101.2.12 Tables.................................................................................................................................. 1-101.2.13 Triggers .............................................................................................................................. 1-121.2.14 Types................................................................................................................................... 1-121.2.15 Users (Other Users) .......................................................................................................... 1-121.2.16 Views .................................................................................................................................. 1-121.2.17 XML Schemas .................................................................................................................... 1-131.3 Database Connections ............................................................................................................. 1-131.4 Entering and Modifying Data ................................................................................................ 1-151.5 Running and Debugging Functions and Procedures ......................................................... 1-161.5.1 Remote Debugging........................................................................................................... 1-181.6 Using the SQL Worksheet....................................................................................................... 1-191.6.1 SQL*Plus Statements Supported and Not Supported in SQL Worksheet................ 1-221.6.2 Script Runner..................................................................................................................... 1-231.6.3 Execution Plan................................................................................................................... 1-241.6.4 Autotrace Pane .................................................................................................................. 1-241.6.5 DBMS Output Pane .......................................................................................................... 1-241.6.6 OWA Output Pane ........................................................................................................... 1-251.7 Using SQL*Plus ........................................................................................................................ 1-251.8 Using Snippets to Insert Code Fragments............................................................................ 1-261.8.1 User-Defined Snippets ..................................................................................................... 1-261.9 Using DB Object Search to Find Database Objects.............................................................. 1-27

Page 4: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

iv

1.10 Reports....................................................................................................................................... 1-271.10.1 About Your Database reports ......................................................................................... 1-291.10.2 Database Administration reports ................................................................................... 1-291.10.3 Table reports...................................................................................................................... 1-301.10.4 PL/SQL reports................................................................................................................. 1-311.10.5 Security reports ................................................................................................................. 1-321.10.6 XML reports....................................................................................................................... 1-321.10.7 Jobs reports ........................................................................................................................ 1-321.10.8 Streams reports ................................................................................................................. 1-331.10.9 All Objects reports ............................................................................................................ 1-331.10.10 Data Dictionary reports ................................................................................................... 1-331.10.11 User Defined reports ........................................................................................................ 1-341.10.11.1 User-Defined Report Example: Chart..................................................................... 1-341.10.11.2 User-Defined Report Example: Dynamic HTML.................................................. 1-351.11 SQL Developer Preferences .................................................................................................... 1-361.11.1 Environment...................................................................................................................... 1-361.11.2 Accelerators (Keyboard Shortcuts) ................................................................................ 1-371.11.3 Code Editor........................................................................................................................ 1-371.11.4 Database ............................................................................................................................. 1-391.11.5 Debugger............................................................................................................................ 1-411.11.6 Documentation.................................................................................................................. 1-421.11.7 Extensions .......................................................................................................................... 1-421.11.8 File Types ........................................................................................................................... 1-421.11.9 Migration............................................................................................................................ 1-431.11.10 PL/SQL Compiler............................................................................................................. 1-451.11.11 PL/SQL Debugger............................................................................................................ 1-451.11.12 SQL*Plus ............................................................................................................................ 1-451.11.13 SQL Formatter ................................................................................................................... 1-461.11.14 Web Browser and Proxy .................................................................................................. 1-461.12 Location of User-Related Information .................................................................................. 1-461.13 Using the Help.......................................................................................................................... 1-471.14 Supplementary Oracle Database Information ..................................................................... 1-481.15 For More Information.............................................................................................................. 1-48

2 Migrating Third-Party Databases

2.1 Migration Quick Start................................................................................................................. 2-22.1.1 Performing the Remaining Migration Actions Manually.............................................. 2-32.2 Overview of Migration............................................................................................................... 2-42.2.1 How Migration Works ........................................................................................................ 2-52.2.2 Migration Implemented as SQL Developer Extensions................................................. 2-52.3 Preparing a Migration Plan ....................................................................................................... 2-62.3.1 Task 1: Determining the Requirements of the Migration Project ................................. 2-62.3.2 Task 2: Estimating Workload............................................................................................. 2-72.3.3 Task 3: Analyzing Operational Requirements ................................................................ 2-82.3.4 Task 4: Analyzing the Application.................................................................................... 2-92.3.5 Task 5: Planning the Migration Project.......................................................................... 2-102.4 Before You Start Migrating: General Information............................................................... 2-10

Page 5: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

v

2.4.1 Creating a Database User for the Migration Repository............................................. 2-102.4.2 Requirements for Creating the Destination Oracle Objects........................................ 2-112.5 Before You Start Migrating: Source-Specific Information.................................................. 2-122.5.1 Before Migrating From Microsoft SQL Server.............................................................. 2-122.5.2 Before Migrating From Microsoft Access...................................................................... 2-122.5.2.1 Creating Microsoft Access XML Files..................................................................... 2-152.5.3 Before Migrating From MySQL...................................................................................... 2-152.6 Capturing the Source Database ............................................................................................. 2-152.7 Creating and Customizing the Converted Model............................................................... 2-162.7.1 Correcting Errors in the Converted Model ................................................................... 2-162.8 Generating the DDL for the Oracle Schema Objects........................................................... 2-172.9 Migrating the Data................................................................................................................... 2-172.9.1 Transferring the Data Offline.......................................................................................... 2-172.9.1.1 Creating Data Files From Microsoft SQL Server................................................... 2-182.9.1.2 Creating Data Files From Microsoft Access........................................................... 2-182.9.1.3 Creating Data Files From MySQL........................................................................... 2-182.9.1.4 Populating the Destination Database Using the Data Files................................. 2-192.10 Testing the Oracle Database ................................................................................................... 2-222.10.1 Testing Methodology ....................................................................................................... 2-222.10.2 Testing the Oracle Database............................................................................................ 2-232.10.2.1 Guidelines for Creating Tests .................................................................................. 2-252.10.2.2 Example of a Unit Test Case .................................................................................... 2-252.11 Deploying the Oracle Database ............................................................................................. 2-262.11.1 Choosing a Rollout Strategy............................................................................................ 2-262.11.1.1 Phased Approach ...................................................................................................... 2-272.11.1.2 Big Bang Approach ................................................................................................... 2-272.11.1.3 Parallel Approach...................................................................................................... 2-272.11.2 Deploying the Destination Database ............................................................................. 2-272.12 Using Migration Reports ........................................................................................................ 2-282.13 SQL Developer User Interface for Migration....................................................................... 2-282.13.1 Migration Menu ................................................................................................................ 2-312.13.2 Other Menus: Migration Items ....................................................................................... 2-322.13.3 Migration Preferences ...................................................................................................... 2-322.13.4 Migration Log Panes ........................................................................................................ 2-322.13.5 Using the Translation Scratch Editor ............................................................................. 2-32

3 Tutorial: Creating Objects for a Small Database

3.1 Creating a Table (BOOKS) ......................................................................................................... 3-23.2 Creating a Table (PATRONS) ................................................................................................... 3-33.3 Creating a Table (TRANSACTIONS)....................................................................................... 3-43.4 Creating a Sequence.................................................................................................................... 3-63.5 Creating a View........................................................................................................................... 3-73.6 Creating a PL/SQL Procedure.................................................................................................. 3-83.7 Debugging a PL/SQL Procedure ............................................................................................. 3-93.8 Using the SQL Worksheet for Queries.................................................................................. 3-103.9 Script for Creating and Using the Library Tutorial Objects .............................................. 3-11

Page 6: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

vi

4 Dialog Boxes for Creating/Editing Objects

4.1 Add Extension ............................................................................................................................. 4-14.2 Check for Updates ...................................................................................................................... 4-14.3 Choose Directory......................................................................................................................... 4-24.4 Create/Edit New Object ............................................................................................................ 4-24.5 Create/Edit/Select Database Connection ............................................................................... 4-24.6 Rename Connection (Migration) .............................................................................................. 4-44.7 Select Connection........................................................................................................................ 4-44.8 Connection Information............................................................................................................. 4-54.9 No Connection Found ................................................................................................................ 4-54.10 Connection Rename Error ......................................................................................................... 4-54.11 Continue After Pause ................................................................................................................. 4-54.12 Copy Oracle Schema................................................................................................................... 4-54.13 Select Library ............................................................................................................................... 4-64.14 Create Library.............................................................................................................................. 4-64.15 Excel Import Data ....................................................................................................................... 4-64.16 Export/Import Connection Descriptors .................................................................................. 4-74.17 Create/Edit Database Link........................................................................................................ 4-74.18 Create/Edit Index ....................................................................................................................... 4-84.19 Create/Edit Materialized View Log......................................................................................... 4-94.20 Create PL/SQL Package ......................................................................................................... 4-104.21 Create PL/SQL Subprogram (Function or Procedure) ...................................................... 4-104.22 Create/Edit Sequence.............................................................................................................. 4-114.23 Create SQL File......................................................................................................................... 4-124.24 Create/Edit Synonym ............................................................................................................. 4-124.25 Create Table (quick creation) ................................................................................................. 4-134.26 Create/Edit Table (with advanced options) ........................................................................ 4-144.27 Create Trigger........................................................................................................................... 4-234.28 Create Type (User-Defined) ................................................................................................... 4-244.29 Create/Edit User...................................................................................................................... 4-254.30 Create/Edit User Defined Report.......................................................................................... 4-264.31 Create/Edit User Defined Report Folder ............................................................................. 4-274.32 Create/Edit View..................................................................................................................... 4-284.33 Create XML Schema ................................................................................................................ 4-334.34 Configure File Type Associations.......................................................................................... 4-334.35 DDL Panel for Creating or Editing an Object ...................................................................... 4-334.36 Debugger - Attach to JPDA .................................................................................................... 4-344.37 Describe Object Window ........................................................................................................ 4-344.38 Edit Value (Table Column Data) ........................................................................................... 4-344.39 Enter Bind Values .................................................................................................................... 4-344.40 Export (Database Objects and Data) ..................................................................................... 4-344.41 Export: Advanced Data Filter ................................................................................................ 4-364.42 Export Error .............................................................................................................................. 4-364.43 Export Table Data .................................................................................................................... 4-364.44 External Tools ........................................................................................................................... 4-374.45 Create/Edit External Tool ...................................................................................................... 4-374.46 Create Offline Database Capture Scripts.............................................................................. 4-38

Page 7: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

vii

4.47 Filter ........................................................................................................................................... 4-394.48 Insert Macro .............................................................................................................................. 4-394.49 Externally Modified Files........................................................................................................ 4-394.50 Filter Object Types ................................................................................................................... 4-394.51 Filter Schemas........................................................................................................................... 4-404.52 Filter Error................................................................................................................................. 4-404.53 Find/Replace Text ................................................................................................................... 4-404.54 Generate Oracle DDL .............................................................................................................. 4-404.55 Generate Offline Data Move Files ......................................................................................... 4-414.56 Go to Line Number.................................................................................................................. 4-414.57 Go to Line Number: Error....................................................................................................... 4-414.58 Load Preset Key Mappings..................................................................................................... 4-414.59 Modify Access Database ......................................................................................................... 4-414.60 Modify Value ............................................................................................................................ 4-424.61 Data Move Details.................................................................................................................... 4-424.62 No Object Found ...................................................................................................................... 4-434.63 Open File ................................................................................................................................... 4-434.64 Oracle-Only Report.................................................................................................................. 4-434.65 Query Builder ........................................................................................................................... 4-434.66 Recent Files ............................................................................................................................... 4-444.67 Create Repository..................................................................................................................... 4-444.68 Delete or Truncate Repository ............................................................................................... 4-444.69 Capture Microsoft Access Exporter XML............................................................................. 4-444.70 Select Current Repository ....................................................................................................... 4-454.71 Cannot Capture Table ............................................................................................................. 4-454.72 Run/Debug PL/SQL............................................................................................................... 4-454.73 Create/Edit Breakpoint........................................................................................................... 4-464.74 Save/Save As............................................................................................................................ 4-464.75 Save Files ................................................................................................................................... 4-474.76 Unable to Save Files................................................................................................................. 4-474.77 Save Style Settings ................................................................................................................... 4-474.78 Schema Differences.................................................................................................................. 4-474.79 Schema Differences Source or Destination Error ................................................................ 4-484.80 Set Data Mapping .................................................................................................................... 4-484.81 Add/Edit Rule.......................................................................................................................... 4-484.82 Set Pause Continue .................................................................................................................. 4-494.83 Sign In (checking for updates) ............................................................................................... 4-494.84 Single Record View.................................................................................................................. 4-494.85 Save Snippet (User-Defined) .................................................................................................. 4-494.86 Edit Snippets (User-Defined) ................................................................................................. 4-504.87 SQL History List....................................................................................................................... 4-504.88 SQL*Plus Location ................................................................................................................... 4-504.89 Unable to Open File ................................................................................................................. 4-514.90 Unsupported Database Version............................................................................................. 4-51

5 Database Objects: Usage Information

5.1 Overview of Managing Objects ................................................................................................ 5-1

Page 8: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

viii

5.2 Managing Tables ......................................................................................................................... 5-25.2.1 Column Data Types............................................................................................................. 5-25.2.2 Column Default Values....................................................................................................... 5-35.2.3 Ensuring Data Integrity With Constraints ....................................................................... 5-35.2.4 Column Constraints ............................................................................................................ 5-45.2.5 Table-Level Constraints ...................................................................................................... 5-45.2.5.1 Primary Key................................................................................................................... 5-55.2.5.2 Unique Key.................................................................................................................... 5-55.2.5.3 Check Constraint .......................................................................................................... 5-55.2.5.4 Foreign Key ................................................................................................................... 5-65.3 Managing Indexes....................................................................................................................... 5-65.3.1 Creating Indexes for Use with Constraints...................................................................... 5-75.3.2 Index Types .......................................................................................................................... 5-75.3.2.1 Normal ........................................................................................................................... 5-75.3.2.2 Ascending and Descending ........................................................................................ 5-75.3.2.3 Column and Function-based....................................................................................... 5-75.3.2.4 Single Column and Concatenated ............................................................................. 5-75.3.3 Guidelines for Creating Indexes........................................................................................ 5-85.3.3.1 Index the Correct Tables and Columns..................................................................... 5-85.3.3.2 Limit the Number of Indexes for Each Table ........................................................... 5-95.3.3.3 Choose the Order of Columns in Composite Indexes............................................. 5-95.3.3.4 Drop Indexes That Are No Longer Required ....................................................... 5-105.4 Managing Views ...................................................................................................................... 5-105.5 Managing Sequences ............................................................................................................... 5-105.6 Managing Synonyms............................................................................................................... 5-11

6 Data Types: Usage Information

6.1 Overview of Data Types ............................................................................................................ 6-16.2 Storing Character Data............................................................................................................... 6-16.2.1 What are the Character Data Types? ................................................................................ 6-16.2.2 Choosing Between the Character Data Types ................................................................. 6-26.3 Storing Numeric Data ................................................................................................................ 6-26.3.1 What Are the Numeric Data Types?................................................................................. 6-26.3.2 Using NUMBER Data Types.............................................................................................. 6-36.3.3 Using Floating-Point Number Formats ............................................................................ 6-46.3.3.1 BINARY_FLOAT .......................................................................................................... 6-56.3.3.2 BINARY_DOUBLE....................................................................................................... 6-56.4 Storing Datetime Data ................................................................................................................ 6-56.4.1 Using DATE and TIMESTAMP Data Types.................................................................... 6-56.4.1.1 Using the DATE Data Type ........................................................................................ 6-56.4.1.2 Using the TIMESTAMP Data Type............................................................................ 6-66.4.1.3 Using the TIMESTAMP WITH TIME ZONE Data Type ........................................ 6-66.4.1.4 Using the TIMESTAMP WITH LOCAL TIME ZONE Data Type ......................... 6-66.4.1.5 Representing the Difference Between Datetime Values ......................................... 6-66.4.2 Manipulating the DATE and TIME Formats ................................................................... 6-6

Page 9: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

ix

7 SQL: Usage Information

7.1 Overview of SQL......................................................................................................................... 7-17.1.1 Features of SQL .................................................................................................................... 7-17.1.2 Types of SQL Statements .................................................................................................... 7-27.2 Retrieving Data With Queries ................................................................................................... 7-27.2.1 Displaying Data Using the SELECT Statement............................................................... 7-27.2.2 Using Character Literals in SQL Statements.................................................................... 7-37.2.2.1 Quoting Character Literals.......................................................................................... 7-37.2.3 Using a Column Alias to Change Headings When Selecting Data .............................. 7-47.2.4 Restricting Data Using the WHERE Clause..................................................................... 7-47.2.5 Sorting Data Using the ORDER BY Clause...................................................................... 7-57.2.6 Displaying Data From Multiple Tables ............................................................................ 7-67.3 Manipulating Data With SQL Statements ............................................................................... 7-77.3.1 Adding Data With the INSERT Statement....................................................................... 7-77.3.2 Updating Data With the UPDATE Statement ................................................................. 7-87.3.3 Deleting Data With the DELETE Statement .................................................................... 7-87.4 Transaction Control Statements................................................................................................ 7-87.4.1 Committing Transaction Changes..................................................................................... 7-97.4.2 Rolling Back a Transaction ................................................................................................. 7-97.5 Using Pseudocolumns, Sequences, and SQL Functions..................................................... 7-107.5.1 Using Pseudocolumns With SQL ................................................................................... 7-107.5.2 Using Sequences ............................................................................................................... 7-117.5.3 Using Character Functions .............................................................................................. 7-117.5.4 Using Arithmetic Operators............................................................................................ 7-127.5.5 Using Numeric Functions................................................................................................ 7-127.5.6 Using Date Functions ....................................................................................................... 7-137.5.7 Using Aggregate Functions............................................................................................. 7-147.6 Using SQL Data Definition Language Statements .............................................................. 7-157.6.1 Creating a Table With SQL.............................................................................................. 7-157.6.2 Creating and Modifying an Index With SQL ............................................................... 7-167.6.3 Creating and Modifying a Constraint With SQL ......................................................... 7-167.6.4 Altering a Table With SQL .............................................................................................. 7-177.6.5 Dropping a Table With SQL............................................................................................ 7-177.6.6 Creating and Dropping a Sequence ............................................................................... 7-177.6.7 Creating and Dropping a Synonym............................................................................... 7-18

8 PL/SQL: Usage Information

8.1 Overview of PL/SQL ................................................................................................................. 8-18.2 Entering and Executing PL/SQL Code ................................................................................... 8-28.3 Utilizing the Main Features of PL/SQL .................................................................................. 8-28.3.1 Using PL/SQL Block Structure.......................................................................................... 8-38.3.2 Using Comments ................................................................................................................. 8-48.3.3 Declaring Variables and Constants ................................................................................... 8-48.3.4 Using Identifiers in PL/SQL .............................................................................................. 8-58.3.5 Assigning Values to a Variable With the Assignment Operator .................................. 8-68.3.6 Using Literals ....................................................................................................................... 8-7

Page 10: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

x

8.3.7 Declaring and Assigning Variables With DEFAULT or NOT NULL .......................... 8-88.3.8 Assigning Values to a Variable With SELECT INTO ..................................................... 8-98.3.9 Inputting and Outputting Data with PL/SQL ................................................................ 8-98.3.10 Using %ROWTYPE and %TYPE Attributes to Declare Data Types ......................... 8-108.3.10.1 Using the %ROWTYPE Attribute to Declare Variables ....................................... 8-108.3.10.2 Using the %TYPE Attribute to Declare Variables................................................. 8-118.3.11 Using PL/SQL Control Structures ................................................................................. 8-118.3.11.1 Conditional Control With IF-THEN ....................................................................... 8-118.3.11.2 Conditional Control With the CASE Statement.................................................... 8-128.3.11.3 Iterative Control With LOOPs ................................................................................. 8-138.3.11.4 Sequential Control With GOTO .............................................................................. 8-158.3.12 Using Local PL/SQL Subprograms in PL/SQL Blocks .............................................. 8-158.3.13 Working With PL/SQL Data Structures ....................................................................... 8-178.3.13.1 Using Cursors............................................................................................................. 8-178.3.13.2 Using Collections....................................................................................................... 8-178.3.13.3 Using Records ............................................................................................................ 8-188.3.14 Processing Queries with PL/SQL .................................................................................. 8-198.3.15 Using Dynamic SQL in PL/SQL .................................................................................... 8-198.3.16 Using Bind Variables........................................................................................................ 8-218.4 Handling PL/SQL Errors ....................................................................................................... 8-218.4.1 Summary of Predefined PL/SQL Exceptions............................................................... 8-218.4.2 Using the Exception Handler.......................................................................................... 8-238.4.3 Declaring PL/SQL Exceptions........................................................................................ 8-238.4.4 Scope Rules for PL/SQL Exceptions.............................................................................. 8-238.4.5 Continuing After an Exception is Raised ...................................................................... 8-24

9 Subprograms and Packages: Usage Information

9.1 Overview of Packages and Subprograms ............................................................................... 9-19.1.1 Stored Subprograms............................................................................................................ 9-29.1.2 Packages ................................................................................................................................ 9-29.2 Managing Subprograms ............................................................................................................ 9-39.3 Managing Packages .................................................................................................................... 9-39.3.1 Calling Subprograms in Packages..................................................................................... 9-49.3.2 Accessing Variables in Packages ....................................................................................... 9-49.4 Oracle Product-Specific Packages............................................................................................. 9-5

10 Triggers: Usage Information

10.1 Overview of Triggers............................................................................................................... 10-110.1.1 Types of Triggers ............................................................................................................. 10-210.1.2 Naming Triggers .............................................................................................................. 10-210.1.3 When Is the Trigger Fired? ............................................................................................. 10-210.1.4 Controlling When a Trigger Is Fired ............................................................................. 10-210.1.4.1 Firing Triggers With the BEORE and AFTER Options ........................................ 10-210.1.4.2 Firing Triggers With the FOR EACH ROW Option ............................................ 10-310.1.4.3 Firing Triggers Based on Conditions (WHEN Clause) ....................................... 10-310.1.5 Accessing Column Values in Row Triggers ................................................................. 10-310.1.6 Detecting the DML Operation That Fired a Trigger.................................................... 10-4

Page 11: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

xi

10.1.7 Enabled and Disabled Trigger Modes ........................................................................... 10-410.1.8 Error Conditions and Exceptions in the Trigger Body ............................................... 10-410.2 Designing Triggers .................................................................................................................. 10-510.2.1 Guidelines For Triggers ................................................................................................... 10-510.2.2 Restrictions on Creating Triggers .................................................................................. 10-510.2.3 Privileges Needed to Work with Triggers ................................................................... 10-6

11 SQL*Plus: Usage Information

11.1 Overview of SQL*Plus ............................................................................................................ 11-111.2 Using SQL*Plus ........................................................................................................................ 11-111.2.1 Starting and Exiting SQL*Plus........................................................................................ 11-211.2.2 Displaying Help With SQL*Plus .................................................................................... 11-211.2.3 Entering and Executing SQL Statements and Commands ......................................... 11-211.2.4 SQL*Plus DESCRIBE Command .................................................................................... 11-311.2.5 SQL*Plus SET Commands............................................................................................... 11-311.2.6 Running Scripts From SQL*Plus .................................................................................... 11-311.2.7 Spooling From SQL*Plus ................................................................................................. 11-411.2.8 Using Variables With SQL*Plus ..................................................................................... 11-411.2.8.1 Prompting for a Variable .......................................................................................... 11-411.2.8.2 Defining a Variable Value for a Query................................................................... 11-5

12 Working in a Global Environment

12.1 Overview of Globalization Support ...................................................................................... 12-112.2 NLS Parameter Values in the SQL Developer Environment............................................. 12-312.3 Setting up the Globalization Support Environment ........................................................... 12-412.3.1 Setting NLS Parameters ................................................................................................... 12-412.3.2 Choosing a Locale with the NLS_LANG Environment Variable .............................. 12-512.3.3 Language and Territory Parameters .............................................................................. 12-612.3.3.1 NLS_LANGUAGE..................................................................................................... 12-612.3.3.2 NLS_TERRITORY...................................................................................................... 12-712.3.4 Date and Time Parameters .............................................................................................. 12-812.3.4.1 Date Formats .............................................................................................................. 12-812.3.4.2 Time Formats ........................................................................................................... 12-1012.3.5 Calendar Definitions ...................................................................................................... 12-1112.3.5.1 Calendar Formats .................................................................................................... 12-1112.3.5.2 NLS_CALENDAR ................................................................................................... 12-1212.3.6 Numeric and List Parameters ....................................................................................... 12-1212.3.6.1 Numeric Formats..................................................................................................... 12-1312.3.6.2 NLS_NUMERIC_CHARACTERS ......................................................................... 12-1312.3.7 Monetary Parameters ..................................................................................................... 12-1412.3.7.1 Currency Formats.................................................................................................... 12-1412.3.7.2 NLS_CURRENCY.................................................................................................... 12-1412.3.7.3 NLS_ISO_CURRENCY ........................................................................................... 12-1512.3.7.4 NLS_DUAL_CURRENCY...................................................................................... 12-1512.3.8 Linguistic Sorting and Searching.................................................................................. 12-1512.3.8.1 NLS_SORT................................................................................................................ 12-16

Page 12: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

xii

12.3.8.2 NLS_COMP .............................................................................................................. 12-1712.3.8.3 Case and Accent Insensitive Searching ................................................................ 12-1812.3.9 Length Semantics ............................................................................................................ 12-1812.3.9.1 NLS_LENGTH_SEMANTICS................................................................................ 12-1912.4 SQL and PL/SQL Programming with Unicode ................................................................ 12-1912.4.1 Overview of Unicode ..................................................................................................... 12-2012.4.2 SQL NCHAR Data Types .............................................................................................. 12-2012.4.2.1 The NCHAR Data Type.......................................................................................... 12-2112.4.2.2 The NVARCHAR2 Data Type ............................................................................... 12-2112.4.3 Unicode String Literals .................................................................................................. 12-2212.5 Locale-Dependent SQL Functions with Optional NLS Parameters ............................... 12-2212.5.1 Default Values for NLS Parameters in SQL Functions ............................................. 12-2312.5.2 Specifying NLS Parameters in SQL Functions ........................................................... 12-2312.5.3 Unacceptable NLS Parameters in SQL Functions ...................................................... 12-25

Page 13: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Concepts and Usage 1-1

1SQL Developer Concepts and Usage

Oracle SQL Developer is a graphical version of SQL*Plus that gives database developers a convenient way to perform basic tasks. You can browse, create, edit, and delete (drop) database objects; run SQL statements and scripts; edit and debug PL/SQL code; manipulate and export data; and view and create reports.

You can connect to any target Oracle database schema using standard Oracle database authentication. Once connected, you can perform operations on objects in the database.

You can also connect to schemas for selected third-party (non-Oracle) databases, such as MySQL, Microsoft SQL Server, and Microsoft Access, and you can view metadata and data in these databases.

See the Related Topics to learn about key features of SQL Developer.

Related TopicsSection 1.1, "SQL Developer User Interface"

Section 1.2, "Database Objects"

Section 1.3, "Database Connections"

Section 1.4, "Entering and Modifying Data"

Section 1.5, "Running and Debugging Functions and Procedures"

Section 1.6, "Using the SQL Worksheet"

Section 1.7, "Using SQL*Plus"

Section 1.8, "Using Snippets to Insert Code Fragments"

Section 1.9, "Using DB Object Search to Find Database Objects"

Section 1.10, "Reports"

Section 1.11, "SQL Developer Preferences"

Section 1.12, "Location of User-Related Information"

Section 1.13, "Using the Help"

Section 1.14, "Supplementary Oracle Database Information"

Section 1.15, "For More Information"

Chapter 2, "Migrating Third-Party Databases"

Chapter 3, "Tutorial: Creating Objects for a Small Database"

Page 14: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface

1-2 SQL Developer Online Help

1.1 SQL Developer User InterfaceThe SQL Developer window generally uses the left side for navigation to find and select objects, and the right side to display information about selected objects.

The menus at the top contain standard entries, plus entries for features specific to SQL Developer (see Section 1.1.1, "Menus for SQL Developer"), as shown in the following figure.

You can use shortcut keys to access menus and menu items: for example Alt+F for the File menu and Alt+E for the Edit menu; or Alt+H, then Alt+S for Help, then Full Text Search. You can also display the File menu by pressing the F10 key.

Icons under the menus perform the following actions:

■ New creates a new a new database object (see Section 4.4, "Create/Edit New Object").

■ Open opens a file (see Section 4.63, "Open File").

■ Save saves any changes to the currently selected object.

■ Save All saves any changes to all open objects.

■ Open SQL Worksheet opens the SQL Worksheet (see Using the SQL Worksheet). If you do not use the drop-down arrow to specify the database connection to use, you are asked to select a connection.

■ Back moves to the pane that you most recently visited. (Or use the drop-down arrow to specify a tab view.)

■ Forward moves to the pane after the current one in the list of visited panes. (Or use the drop-down arrow to specify a tab view.)

The left side of the SQL Developer window has tabs and panes for the Connections and Reports navigators, icons for performing actions, and a hierarchical tree display for the currently selected navigator, as shown in the following figure.

Note: This text explains the default interface. However, you can customize many aspects of the appearance and behavior of SQL Developer by setting preferences (see Section 1.11).

Note: For migration of third-party databases to Oracle, see also Section 2.13, "SQL Developer User Interface for Migration".

Page 15: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface

SQL Developer Concepts and Usage 1-3

The Connections navigator lists database connections that have been created. To create a new database connection, import an XML file with connection definitions, or export or edit current connections, right-click the Connections node and select the appropriate menu item. (For more information, see Section 1.3, "Database Connections".)

The Reports navigator lists informative reports provided by SQL Developer, such as a list of tables without primary keys for each database connection, as well as any user-defined reports. (For more information, see Section 1.10, "Reports".)

Icons under the Connections tab (above the metadata tree) perform the following actions on the currently selected object:

■ Refresh queries the database for the current details about the selected object (for example, a connection or just a table).

■ Apply Filter restricts the display of objects using a filter that you specify. For example, you can right-click the Tables node and specify a filter of EM% to see only tables that start with EM and to have the Tables node label be changed to Tables (EM%). To remove the effects of applying a filter, right-click the node and select Clear Filter.

The metadata tree in the Connections pane displays all the objects (categorized by object type) accessible to the defined connections. To select an object, expand the appropriate tree node or nodes, then click the object.

The right side of the SQL Developer window has tabs and panes for objects that you select or open, as shown in the following figure, which displays information about a table named BOOKS. (If you hold the mouse pointer over the tab label -- BOOKS in this figure -- a tooltip displays the object’s owner and the database connection.)

Page 16: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface

1-4 SQL Developer Online Help

For objects other than subprograms, icons provide the following options:

■ Freeze View (the pin) keeps that object’s tab and information in the window when you click another object in the Connections navigator; a separate tab and display are created for that other object. If you click the pin again, the object’s display is available for reuse.

■ Edit displays a dialog box for editing the object.

■ Refresh updates the display by querying the database for the latest information.

■ Actions displays a menu with actions appropriate for the object. The actions are the same as when you right-click an object of that type in the Connections navigator, except the Actions menu does not include Edit.

To switch among objects, click the desired tabs; to close a tab, click the X in the tab. If you make changes to an object and click the X, you are asked if you want to save the changes.

For tables and views, this information is grouped under tabs, which are labeled near the top. For example, for tables the tabs are Columns, Data (for seeing and modifying the data itself), Indexes, Constraints, and so on; and you can click a column heading under a tab to sort the grid rows by the values in that column. For most objects, the tabs include SQL, which displays the SQL statement for creating the object.

You can export data from a detail pane or from the results of a SQL Worksheet operation or a report by using the right-click menu and selecting Export.

The Messages - Log area is used for feedback information as appropriate (for example, results of an action, or error or warning messages). If this area is not already visible, you can display is by clicking View and then Log.

The Compiler - Log area is used for any messages displayed as a result of a Compile or Compile for Debug operation.

Related TopicsUsing the Help

Database Objects

Using the SQL Worksheet

Running and Debugging Functions and Procedures

Entering and Modifying Data

SQL Developer Preferences

SQL Developer Concepts and Usage

Tutorial: Creating Objects for a Small Database

1.1.1 Menus for SQL DeveloperThis topic explains menu items that are specific to SQL Developer.

View menuContains options that affect what is displayed in the SQL Developer interface.

Options: New View creates a new tab on the left side showing the hierarchy for only the selected connection; Freeze View keeps the tab and information in the window when you click another object in the Connections navigator; a separate tab and display are created for that other object.

Page 17: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface

SQL Developer Concepts and Usage 1-5

Connections: Moves the focus to the Connections navigator.

Log: Displays the Messages - Log pane, which can contain errors, warnings, and informational messages.

Debugger: Displays panes related to debugging (see Section 1.5, "Running and Debugging Functions and Procedures").

Run Manager: Displays the Run Manager pane, which contains entries for any active debugging sessions.

Status Bar: Controls the display of the status bar at the bottom of the SQL Developer window.

Toolbars: Controls the display of the main toolbar (under the SQL Developer menus) and the Connections navigator toolbar.

Refresh: Updates the current display for any open connections using the current objects in the affected database or databases.

Reports: Displays the Reports navigator (see Section 1.10, "Reports").

DB Object Search: Displays the DB Object Search pane (see Section 1.9, "Using DB Object Search to Find Database Objects").

Snippets: Displays snippets (see Section 1.8, "Using Snippets to Insert Code Fragments").

Navigate menuContains options for navigating to panes and in the execution of subprograms.

Back: Moves to the pane that you most recently visited.

Forward: Moves to the pane after the current one in the list of visited panes.

Go to Line: Goes to the specified line number and highlights the line in the editing window for the selected function or procedure.

Go to Last Edit: Goes to the last line that was edited in the editing window for a function or procedure.

Go to Recent Files: Displays the Recent Files dialog box, in which you can specify a function or procedure to go to.

Run menuContains options relevant when a function or procedure is selected.

Run [name]: Starts execution of the specified function or procedure.

Execution Profile: Displays the execution profile for the selected function or procedure.

Debug menuContains options relevant when a function or procedure is selected.

Debug [name]: Starts execution of the specified function or procedure in debug mode.

The remaining items on the Debug menu match commands on the debugging toolbar, which is described in Section 1.5, "Running and Debugging Functions and Procedures".

Source menuContains options for use when editing functions and procedures.

Page 18: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface

1-6 SQL Developer Online Help

Completion Insight, Smart Completion Insight, and Parameter Insight: Display pop-up windows that list item as you type and from which you can select an item for autocompletion. See also the code insight and completion (autocomplete) options for Code Editor under Section 1.11, "SQL Developer Preferences".

Toggle Line Comments: Inserts and removes comment indicators at the start of selected code lines.

Indent Block: Moves the selected statements to the right.

Unindent Block: Moves the selected statements to the left.

Tools menuInvokes SQL Developer tools.

SQL*Plus: Displays a command-line window for entering SQL and SQL*Plus statements (see Section 1.7, "Using SQL*Plus"). If the location of the SQL*Plus executable is not stored in your SQL Developer preferences, you are asked to specify its location.

External Tools: Displays the External Tools dialog box, with information about user-defined external tools that are integrated with the SQL Developer interface. From this dialog box can add external tools (see Section 4.45, "Create/Edit External Tool"). The Tools menu also contains items for any user-defined external tools.

Preferences: Enables you to customize the behavior of SQL Developer (see Section 1.11, "SQL Developer Preferences").

Export DDL (and Data): Enables you to export some or all objects of one or more object types for a database connection to a file containing SQL statements to create these objects and optionally to export table data (see the Export (Database Objects and Data) dialog box).

Schema Diff: Enables you to compare two schemas to find differences between objects of the same type and name (for example, tables named CUSTOMERS) in two different schemas, and optionally to update the objects in the destination schema to reflect differences in the source schema (see the Schema Differences dialog box).

SQL Worksheet: Displays a worksheet in which you can enter and execute SQL and PL/SQL statements using a specified connection (see Section 1.6, "Using the SQL Worksheet").

Help menuDisplays help about SQL Developer and enables you to check for SQL Developer updates.

Table of Contents: Displays the table of contents for the help.

Full Text Search: Displays a pane for typing character strings or words to search the help.

Index: Displays a pane for using index keywords to search the help.

Check for Updates: Checks for any updates to the selected optional SQL Developer extensions, as well as any mandatory SQL Developer extensions. (If the system you are using is behind a firewall, see the SQL Developer user preferences for Web Browser and Proxy.)

About: Displays version-related information about SQL Developer and its components.

Page 19: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

SQL Developer Concepts and Usage 1-7

1.2 Database ObjectsYou can create, edit, and delete (drop) most types of objects in an Oracle database by using the right-click menu in the Connections navigator or by clicking the Actions button in the detail pane display. For some objects, you can do other operations, as appropriate for the object type.

You can search for specific objects associated with an Oracle database connection by clicking View, then DB Object Search. For more information, see Section 1.9, "Using DB Object Search to Find Database Objects".

If you have connected to any third-party (non-Oracle) databases, such as MySQL, Microsoft SQL Server, or Microsoft Access, you can view their objects using the Connections navigator. (For information about connecting to third-party databases, see the SQL Developer user preferences for Database: Third Party JDBC Drivers.)

Related TopicsSQL Developer Concepts and Usage

Tutorial: Creating Objects for a Small Database

Database: Third Party JDBC Drivers

Supplementary Oracle Database Information

1.2.1 Database Links (Public and Private)A database link is a database object in one database that enables you to access objects on another database. The other database need not be an Oracle Database system; however, to access non-Oracle systems you must use Oracle Heterogeneous Services. After you have created a database link, you can use it to refer to tables and views in the other database. The Connections navigator has a Database Links node for all database links (public and private) owned by the user associated with the specified connection, and a Public Database Links node for all public database links on the database associated with the connection. For help with specific options in creating a database link, see Section 4.17, "Create/Edit Database Link".

You can perform the following operations on a database link by right-clicking the database link name in the Connections navigator and selecting an item from the menu:

■ Test: Validates the database link.

■ Drop: Deletes the database link.

1.2.2 DirectoriesA directory object specifies an alias for a directory (called a folder on Windows systems) on the server file system where external binary file LOBs (BFILEs) and external table data are located. To create a directory (that is, a directory object), you can use SQL Developer or the SQL statement CREATE DIRECTORY.

Note: The actions available from right-click menus and Actions buttons depend on the Oracle Database release number for the specified database connection. If an action mentioned in the text is not available with a connection, it may be that the feature was not available in that release of Oracle Database.

Page 20: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

1-8 SQL Developer Online Help

You can use directory names when referring to BFILEs in your PL/SQL code and OCI calls, rather than hard coding the operating system path name, for management flexibility. All directories are created in a single namespace and are not owned by an individual schema. You can secure access to the BFILEs stored within the directory structure by granting object privileges on the directories to specific users.

1.2.3 FunctionsA function is a type of PL/SQL subprogram, which is a programming object that can be stored and executed in the database server, and called from other programming objects or applications. (Functions return a value; procedures do not return a value.) For help with specific options in creating a PL/SQL subprogram, see Section 4.21, "Create PL/SQL Subprogram (Function or Procedure)".

You can perform the following operations on a function by right-clicking the function name in the Connections navigator and selecting an item from the menu:

■ Open: Displays the function text so that you can view and edit it.

■ Compile: Performs a PL/SQL compilation of the function.

■ Compile with Debug: Performs a PL/SQL compilation of the procedure, with PL/SQL library units compiled for debugging.

■ Run: Displays the Run/Debug PL/SQL dialog box, and then executes the function in normal (not debug) mode.

■ Debug: Displays the Run/Debug PL/SQL dialog box, and then executes the function in debug mode.

■ Execution Profile: Displays the execution profile for the procedure.

■ Rename: Renames the function.

■ Drop: Deletes the function.

1.2.4 IndexesAn index is a database object that contains an entry for each value that appears in the indexed column(s) of the table or cluster and provides direct, fast access to rows. Indexes are automatically created on primary key columns; however, you must create indexes on other columns to gain the benefits of indexing. For help with specific options in creating an index, see Section 4.18, "Create/Edit Index".

You can perform the following operations on an index by right-clicking the index name in the Connections navigator and selecting an item from the menu:

■ Drop: Deletes the index.

■ Rebuild Index: Re-creates the index or one of its partitions or subpartitions. If the index is unusable, a successful rebuild operation makes the index usable. For a function-based index, rebuilding also enables the index; however, if the function on which the index is based does not exist, the rebuild operation fails.

■ Rename Index: Changes the name of the index.

■ Unusable Index: Prevents the index from being used by Oracle in executing queries. An unusable index must be rebuilt, or dropped and re-created, before it can be used again.

■ Coalesce Index: Merges the contents of index blocks, where possible, to free blocks for reuse.

Page 21: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

SQL Developer Concepts and Usage 1-9

1.2.5 Materialized ViewsA materialized view is a database object that contains the results of a query. The FROM clause of the query can name tables, views, and other materialized views. Collectively these objects are called master tables (a replication term) or detail tables (a data warehousing term). This reference uses "master tables" for consistency. The databases containing the master tables are called the master databases. For help with specific options in creating a materialized view, see Section 4.32, "Create/Edit View", especially the View Information or Materialized View Properties pane.

1.2.6 Materialized View LogsA materialized view log is a table associated with the master table of a materialized view. When DML changes are made to master table data, Oracle Database stores rows describing those changes in the materialized view log and then uses the materialized view log to refresh materialized views based on the master table. This process is called incremental or fast refresh. Without a materialized view log, Oracle Database must reexecute the materialized view query to refresh the materialized view. This process is called a complete refresh. Usually, a fast refresh takes less time than a complete refresh.

1.2.7 PackagesA package is an object that contains subprograms, which are programming objects that can be stored and executed in the database server, and called from other programming objects or applications. A package can contain functions or procedures, or both. For help with specific options in creating a package, see Section 4.20, "Create PL/SQL Package".

You can perform the following operations on a package by right-clicking the package name in the Connections navigator and selecting an item from the menu:

■ New Package Body: Displays a pane in which you can enter text for the package body.

■ Drop: Deletes the package.

1.2.8 ProceduresA procedure is a type of PL/SQL subprogram, which is a programming object that can be stored and executed in the database server, and called from other programming objects or applications. (Procedures do not return a value; functions return a value.) For help with specific options in creating a PL/SQL subprogram, see Section 4.21, "Create PL/SQL Subprogram (Function or Procedure)".

You can perform the following operations on a procedure by right-clicking the procedure name in the Connections navigator and selecting an item from the menu:

■ Open: Displays the procedure text so that you can view and edit it.

■ Compile: Performs a PL/SQL compilation of the procedure.

■ Compile with Debug: Performs a PL/SQL compilation of the procedure, with PL/SQL library units compiled for debugging.

■ Run: Displays the Run/Debug PL/SQL dialog box, and then executes the procedure in normal (not debug) mode.

■ Debug: Displays the Run/Debug PL/SQL dialog box, and then executes the procedure in debug mode.

■ Execution Profile: Displays the execution profile for the procedure.

Page 22: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

1-10 SQL Developer Online Help

■ Drop: Deletes the procedure.

■ Compile Dependants: Performs a PL/SQL compilation of the procedure and any relevant dependent subprograms (see the Dependencies tab).

1.2.9 Recycle BinThe Recycle bin (applicable only to Oracle Database Release 10g) holds objects that have been dropped (deleted). The objects are not actually deleted until a commit operation is performed. Before the objects are actually deleted, you can "undelete" them by selecting them in the Recycle bin and selecting Undrop from the right-click menu.

You can perform the following operations on an object in the Recycle bin by right-clicking the object name in the Recycle bin in the Connections navigator and selecting an item from the menu:

■ Purge: Removes the object from the Recycle bin and deletes it.

■ Flashback to Before Drop: Moves the object from the Recycle bin back to its appropriate place in the Connections navigator display.

1.2.10 SequencesSequences are used to generate unique integers. You can use sequences to automatically generate primary key values. For conceptual and usage information about sequences, see Managing Sequences. For help with specific options in creating and editing a sequence, see Section 4.22, "Create/Edit Sequence".

1.2.11 Synonyms (Public and Private)Synonyms provide alternative names for tables, views, sequences, procedures, stored functions, packages, materialized views, Java class database objects, user-defined object types, or other synonyms. The Connections navigator has a Synonyms node for all synonyms (public and private) owned by the user associated with the specified connection, and a Public Synonyms node for all public synonyms on the database associated with the connection. For conceptual and usage information about sequences, see Managing Synonyms. For help with specific options in creating and editing a synonym, see Section 4.24, "Create/Edit Synonym".

1.2.12 TablesTables are used to hold data. Each table typically has multiple columns that describe attributes of the database entity associated with the table, and each column has an associated data type. You can choose from many table creation options and table organizations (such as partitioned tables, index-organized tables, and external tables), to meet a variety of enterprise needs. To create a table, you can do either of the following:

■ Create the table quickly by adding columns and specifying frequently used features. To do this, do not check the Advanced box in the Create Table dialog box. For help with options for creating a table using this quick approach, see Create Table (quick creation).

■ Create the table by adding columns and selecting from a larger set of features. To do this, check the Advanced box in the Create Table dialog box. For help with options for creating a table with advanced features, see Create/Edit Table (with advanced options).

Page 23: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

SQL Developer Concepts and Usage 1-11

You can perform the following operations on a table by right-clicking the table name in the Connections navigator and selecting an item from the menu:

■ Edit: Displays the Create Table (quick creation) dialog box.

■ Table: Table actions include Rename, Copy (create a copy using a different name), Drop (delete the table), Truncate (delete existing data without affecting the table definition), Lock (set the table lock mode: row share, exclusive, and so on), Comment (descriptive comment explaining the use or purpose of the table), Parallel (change the default degree of parallelism for queries and DML on the table), No Parallel (specify serial execution), and Count Rows (return the number of rows).

■ Column: Column actions include Comment (descriptive comment about a column), Add, Drop, and Normalize.

■ Constraint: Includes options for adding, dropping, enabling, and disabling constraints.

■ Index: Options include Create (create an index on specified columns), Create Text (create an Oracle Text index on a column), Create Text (create a function-based index on a column), and Drop.

■ Constraint: Options include Enable or Disable Single, Drop (delete a constraint), Add Check (add a check constraint), Add Foreign Key, and Add Unique.

■ Privileges: If you are connected as a database user with sufficient privileges, you can Grant or Revoke privileges on the table to other users.

■ Statistics: Options include Gather Statistics (compute exact table and column statistics and store them in the data dictionary) and Validate Structure (verifies the integrity of each data block and row, and for an index-organized table also generates the optimal prefix compression count for the primary key index on the table). Statistics are used by the Oracle Database optimizer to choose the execution plan for SQL statements that access analyzed objects.

■ Storage: Options include Shrink Table (shrink space in a table, for segments in tablespaces with automatic segment management) and Move Table (to another tablespace). The Shrink Table options include Compact (only defragments the segment space and compacts the table rows for subsequent release, but does not readjust the high water mark and does not release the space immediately) and Cascade (performs the same operations on all dependent objects of the table, including secondary indexes on index-organized tables).

■ Trigger: Options include Create, Create PK from Sequence (create a before-insert trigger to populate the primary key using values from a specified sequence), Enable or Disable All, Enable or Disable Single, and Drop (delete the trigger).

■ Import Data: Enables you to import data from a Microsoft Excel worksheet.

■ Export Data: Enables you to export some or all of the table data to a file or to the system clipboard, in any of the following formats: XML (XML tags and data), CSV (comma-separated values including a header row for column identifiers), SQL Insert (INSERT statements), or SQL Loader (SQL*Loader control file). After you select a format, the Export Table Data dialog box is displayed.

You can perform the following operations on a column in a table by right-clicking the column name in the Connections navigator and selecting an item from the menu:

■ Rename: Renames the column.

■ Drop: Deletes the column (including all data in that column) from the table.

Page 24: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects

1-12 SQL Developer Online Help

■ Comment: Adds a descriptive comment about the column.

■ Encrypt (for Oracle Database Release 10.2 and higher, and only if the Transparent Data Encryption feature is enabled for the database): Displays a dialog box in which you specify a supported encryption algorithm to be used for encrypting all data in the column. Current data and subsequently inserted data are encrypted.

■ Decrypt (for Oracle Database Release 10.2 and higher, and only if the Transparent Data Encryption feature is enabled for the database): Decrypts data in the column that had been encrypted, and causes data that is subsequently inserted not to be encrypted.

■ Normalize: Creates a new table using the distinct values in the specified column. You must specify names for the new table and its primary key column, as well as a sequence name and trigger name.

For conceptual and usage information about tables, see Managing Tables.

1.2.13 TriggersTriggers are stored PL/SQL blocks associated with a table, a schema, or the database, or anonymous PL/SQL blocks or calls to a procedure implemented in PL/SQL or Java. Oracle Database automatically executes a trigger when specified conditions occur. For conceptual and usage information about triggers, see Triggers: Usage Information. For help with specific options in creating a trigger, see Section 4.27, "Create Trigger".

1.2.14 TypesA data type associates a fixed set of properties with the values that can be used in a column of a table or in an argument of a function or procedure. These properties cause Oracle Database to treat values of one data type differently from values of another data type. Most data types are supplied by Oracle, although users can create data types.

For conceptual and usage information about data types, see Data Types: Usage Information. For help with specific options in creating a user-defined type, see Section 4.28, "Create Type (User-Defined)".

1.2.15 Users (Other Users)Database users are accounts through which you can log in to the database. In the Connections navigator, you can see the Other Users in the database associated with a connection, but the database objects that you are allowed to see for each user are determined by the privileges of the database user associated with the current database connection.

If you are connected as a user with the DBA role, you can create a database user by right-clicking Other Users and selecting Create User, and you can edit an existing database user by right-clicking the user under Other Users and selecting Edit User. For help on options in creating and editing users, see Create/Edit User.

1.2.16 ViewsViews are virtual tables (analogous to queries in some database products) that select data from one or more underlying tables. Oracle Database provides many view creation options and specialized types of views (such as materialized views, described in Section 1.2.5, "Materialized Views"), to meet a variety of enterprise needs. For

Page 25: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Connections

SQL Developer Concepts and Usage 1-13

conceptual and usage information about views, see Managing Views. For help with specific options in creating and editing a view, see Create/Edit View.

You can perform the following operations on a view by right-clicking the view name in the Connections navigator and selecting an item from the menu:

■ Edit: Displays the Create/Edit View dialog box.

■ Drop: Deletes the view.

■ Compile: Recompiles the view, to enable you to locate possible errors before run time. You may want to recompile a view after altering one of its base tables to ensure that the change does not affect the view or other objects that depend on it.

1.2.17 XML SchemasXML schemas are schema definitions, written in XML, that describe the structure and various other semantics of conforming instance XML documents. For conceptual and usage information about XML schemas, see Oracle XML DB Developer's Guide in the Oracle Database documentation library.

You can edit an XML schema by right-clicking the XML schema name in the Connections navigator and selecting Edit from the menu.

1.3 Database ConnectionsA connection is a SQL Developer object that specifies the necessary information for connecting to a specific database as a specific user of that database. You must have at least one database connection (existing, created, or imported) to use SQL Developer.

You can connect to any target Oracle database schema using standard Oracle database authentication. Once connected, you can perform operations on objects in the database. You can also connect to schemas for selected third-party (non-Oracle) databases, such as MySQL, Microsoft SQL Server, and Microsoft Access, and view metadata and data.

When you start SQL Developer and whenever you display the database connections dialog box, SQL Developer automatically imports any connections defined in the tnsnames.ora file on your system, if that file exists. By default, tnsnames.ora is located in the $ORACLE_HOME/network/admin directory, but it can also be in the directory specified by the TNS_ADMIN environment variable or registry value or (on Linux systems) the global configuration directory. On Windows systems, if the tnsnames.ora file exists but its connections are not being used by SQL Developer, define TNS_ADMIN as a system environment variable. For information about the tnsnames.ora file, see the "Local Naming Parameters (tnsnames.ora)" chapter in Oracle Database Net Services Reference.

You can create additional connections (for example, to connect to the same database but as different users, or to connect to different databases). Each database connection is listed in the Connections navigator hierarchy.

To create a new database connection, right-click the Connections node and select New Database Connection. Use the dialog box to specify information about the connection (see Section 4.5, "Create/Edit/Select Database Connection").

To edit the information about an existing database connection, right-click the connection name in the Connections navigator display and select Properties. Use the dialog box to modify information about the connection (see Section 4.5, "Create/Edit/Select Database Connection").

Page 26: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Connections

1-14 SQL Developer Online Help

To export information about the existing database connections into an XML file that you can later use for importing connections, right-click Connections in the Connections navigator display and select Export Connections. Use the dialog box to specify the connections to be exported (see Section 4.16, "Export/Import Connection Descriptors").

To import connections that had previously been exported (adding them to any connections that may already exist in SQL Developer), right-click Connections in the Connections navigator display and select Import Connections. Use the dialog box to specify the connections to be imported (see Section 4.16, "Export/Import Connection Descriptors").

To perform remote debugging if you are using the Sun Microsystem's Java Platform Debugger Architecture (JPDA) and you would like the debugger to listen so that a debuggee can attach to the debugger, right-click the connection name in the Connections navigator display and select Remote Debug. Use the dialog box to specify remote debugging information (see Section 4.36, "Debugger - Attach to JPDA").

To estimate or compute statistics for objects in a database schema, right-click the connection name in the Connections navigator display and select Gather Schema Statistics. Statistics are used to optimize SQL execution.

To have the PL/Scope tool collect data for all identifiers in PL/SQL source programs, including identifiers in package bodies, right-click the connection name in the Connections navigator display and select Toggle PL/Scope Identifier Collection. This toggles the setting between IDENTIFIERS:ALL (affects only the PL/SQL code compiled after you specify it) and IDENTIFIERS:NONE. PL/Scope is a compiler-driven tool that collects and organizes data about user-defined identifiers from PL/SQL source code. For information about using PL/Scope, see Oracle Database Advanced Application Developer's Guide.

To delete a connection (that is, delete it from SQL Developer, not merely disconnect from the current connection), right-click the connection name in the Connections navigator display and select Delete. Deleting a connection does not delete the user associated with that connection.

To connect using an existing connection, expand its node in the Connections navigator, or right-click its name and select Connect. A SQL Worksheet window is also opened for the connection (see Section 1.6, "Using the SQL Worksheet").

To disconnect from the current connection, right-click its name in the Connections navigator and select Disconnect.

Sharing of ConnectionsBy default, each connection in SQL Developer is shared when possible. For example, if you open a table in the Connections navigator and two SQL Worksheets using the same connection, all three panes use one shared connection to the database. In this example, a commit operation in one SQL Worksheet commits across all three panes. If you want a dedicated session, you must duplicate your connection and give it another name. Sessions are shared by name, not connection information, so this new connection will be kept separate from the original.

Advanced Security for JDBC Connection to the DatabaseYou are encouraged to use Oracle Advanced Security to secure a JDBC connection to the database. Both the JDBC OCI and the JDBC Thin drivers support at least some of the Oracle Advanced Security features. If you are using the OCI driver, you can set relevant parameters in the same way that you would in any Oracle client setting. The JDBC Thin driver supports the Oracle Advanced Security features through a set of

Page 27: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Entering and Modifying Data

SQL Developer Concepts and Usage 1-15

Java classes included with the JDBC classes in a Java Archive (JAR) file and supports security parameter settings through Java properties objects.

For more information about using Oracle Advanced Security, see Oracle Database JDBC Developer's Guide and Reference.

Related TopicsCreate/Edit/Select Database Connection

Export/Import Connection Descriptors

SQL Developer Concepts and Usage

1.4 Entering and Modifying DataYou can use SQL Developer to enter data into tables and to edit and delete existing table data. To do any of these operations, select the table in the Connections navigator, then click the Data tab in the table detail display. The following figure shows the Data pane for a table named BOOKS, with a filter applied to show only books whose rating is 10, and after the user has clicked in the Title cell for the first book.

Icons and other controls under the Data tab provide the following options:

■ Freeze View (the pin) keeps that object’s tab and information in the window when you click another object in the Connections navigator; a separate tab and display are created for that other object. If you click the pin again, the object’s display is available for reuse.

■ Refresh queries the database to update the data display. If a filter is specified, the refresh operation uses the filter.

■ Insert Row adds an empty row after the selected row, for you to enter new data.

■ Delete Selected Row(s) marks the selected rows for deletion. The actual deletion does not occur until you commit changes.

■ Commit Changes ends the current transaction and makes permanent all changes performed in the transaction.

■ Rollback Changes undoes any work done in the current transaction.

■ Sort displays a dialog box for selecting columns to sort by. For each column, you can specify ascending or descending order, and you can specify that null values be displayed first.

■ Filter enables you to enter a SQL predicate (WHERE clause text without the WHERE keyword) for limiting the display of data. For example, to show only rows where the RATING column value is equal to 10, specify: rating = 10

■ Actions displays a menu with actions relevant to the table.

Page 28: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Running and Debugging Functions and Procedures

1-16 SQL Developer Online Help

When you enter a cell in the grid, you can directly edit the data for many data types, and for all data types you can click the ellipsis (...) button to edit the data. For binary data you cannot edit the data in the cell, but must use the ellipsis button.

In the Data pane for a table or view, you can split the display vertically or horizontally to see two (or more) parts independently by using the split box (thin blue rectangle), located to the right of the bottom scroll bar and above the right scroll bar.

In the Data pane, the acceptable format or formats for entering dates may be different from the date format required by SQL*Plus.

Related TopicsSQL Developer User Interface

SQL Developer Concepts and Usage

1.5 Running and Debugging Functions and ProceduresYou can use SQL Developer to run and debug PL/SQL subprograms (functions and procedures).

■ To run a subprogram, click its name in the Connections navigator; then either right-click and select Run, or click the Edit icon and then click the Run icon above its source listing.

■ To debug a subprogram, click its name in the Connections navigator. If the procedure in its current form has not already been compiled for debug, right-click and select Compile for Debug. Then click the Edit icon and click the Debug icon above its source listing.

In both cases, a code editing window is displayed. The following figure shows the code editing window being used to debug a procedure named LIST_A_RATING2, which is used for tutorial purposes in Section 3.7, "Debugging a PL/SQL Procedure".

Page 29: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Running and Debugging Functions and Procedures

SQL Developer Concepts and Usage 1-17

In the code editing window, under the tab with the name of the subprogram, is a toolbar, and beneath it is the text of the subprogram, which you can edit. You can set and unset breakpoints for debugging by clicking to the left of the thin vertical line beside each statement with which you want to associate a breakpoint. (When a breakpoint is set, a red circle is displayed.)

The toolbar under the tab for the subprogram name has a toolbar that includes the icons shown in the following figure.

■ Run starts normal execution of the subprogram, and displays the results in the Running - Log tab.

■ Debug starts execution of the subprogram in debug mode, and displays the Debugging - Log tab, which includes the debugging toolbar for controlling the execution.

■ Compile performs a PL/SQL compilation of the subprogram.

■ Compile for Debug performs a PL/SQL compilation of the subprogram so that it can be debugged.

The Debugging - Log tab under the code text area contains the debugging toolbar and informational messages. The debugging toolbar has the icons shown in the following figure.

Page 30: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Running and Debugging Functions and Procedures

1-18 SQL Developer Online Help

■ Find Execution Point goes to the next execution point.

■ Resume continues execution.

■ Step Over bypasses the next subprogram (unless the subprogram has a breakpoint) and goes to the next statement after the subprogram. If the execution point is located on a subprogram call, it runs that subprogram without stopping (instead of stepping into it), then positions the execution point on the statement that follows the call. If the execution point is located on the last statement of a subprogram, Step Over returns from the subprogram, placing the execution point on the line of code that follows the call to the subprogram from which you are returning.

■ Step Into executes a single program statement at a time. If the execution point is located on a call to a subprogram, Step Into steps into that subprogram and places the execution point on its first statement. If the execution point is located on the last statement of a subprogram, Step Into returns from the subprogram, placing the execution point on the line of code that follows the call to the subprogram from which you are returning.

■ Step Out leaves the current subprogram and goes to the next statement.

■ Step to End of Method goes to the last statement of the current subprogram.

■ Pause halts execution but does not exit, thus allowing you to resume execution.

■ Terminate halts and exits the execution. You cannot resume execution from this point; instead, to start running or debugging from the beginning of the subprogram, click the Run or Debug icon in the Source tab toolbar.

The Breakpoints tab under the code text area displays breakpoints, both system-defined and user-defined.

The Data tab under the code text area displays information about all variables.

The Watches tab under the code text area displays information about watchpoints.

For more information about developing, compiling, and using PL/SQL functions and procedures, see Subprograms and Packages: Usage Information.

If the function or procedure to be debugged is on a remote system, see also Section 1.5.1, "Remote Debugging".

Related TopicsUsing Snippets to Insert Code Fragments

Run/Debug PL/SQL (dialog box)

Debugging a PL/SQL Procedure (tutorial)

Subprograms and Packages: Usage Information

SQL Developer Concepts and Usage

1.5.1 Remote DebuggingTo debug a function or procedure for a connection where the database is on a different host than the one on which you are running SQL Developer, you can perform remote

Page 31: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

SQL Developer Concepts and Usage 1-19

debugging. Remote debugging involves many of the steps as for local debugging; however, do the following before you start the remote debugging:

1. Use an Oracle client such as SQL*Plus to issue the debugger connection command. Whatever client you use, make sure that the session which issues the debugger connection commands is the same session which executes your PL/SQL program containing the breakpoints. For example, if the name of the remote system is remote1, use the following SQL*Plus command to open a TCP/IP connection to that system and the port for the JDWP session:

EXEC DBMS_DEBUG_JDWP.CONNECT_TCP('remote1', '4000');

The first parameter is the IP address or host name of the remote system, and the second parameter is the port number on that remote system on which the debugger is listening.

2. Right-click the connection for the remote database, select Remote Debug, and complete the information in the Debugger - Attach to JPDA dialog box.

Then, follow the steps that you would for local debugging (for example, see Section 3.7, "Debugging a PL/SQL Procedure").

1.6 Using the SQL WorksheetYou can use the SQL Worksheet to enter and execute SQL, PL/SQL, and SQL*Plus statements. You can specify any actions that can be processed by the database connection associated with the worksheet, such as creating a table, inserting data, creating and editing a trigger, selecting data from a table, and saving that data to a file.

You can display a SQL Worksheet by right-clicking a connection in the Connections navigator and selecting Open SQL Worksheet, by selecting Tools and then SQL Worksheet, or by clicking the Use SQL Worksheet icon under the menu bar. In the Select Connection dialog box, select the database connection to use for your work with the worksheet. You can also use that dialog box to create and edit database connections. (You can have a SQL Worksheet window open automatically when you open a database connection by enabling the appropriate SQL Developer user preference under Database Connections.)

The SQL Worksheet has the user interface shown in the following figure:

Page 32: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

1-20 SQL Developer Online Help

SQL Worksheet toolbar (under the SQL Worksheet tab): Contains icons for the following operations:

■ Execute Statement executes the statement at the mouse pointer in the Enter SQL Statement box. The SQL statements can include bind variables and substitution variables of type VARCHAR2 (although in most cases, VARCHAR2 is automatically converted internally to NUMBER if necessary); a pop-up box is displayed for entering variable values.

■ Run Script executes all statements in the Enter SQL Statement box using the Script Runner. The SQL statements can include substitution variables (but not bind variables) of type VARCHAR2 (although in most cases, VARCHAR2 is automatically converted internally to NUMBER if necessary); a pop-up box is displayed for entering substitution variable values.

■ Commit writes any changes to the database, and ends the transaction; also clears any output in the Results and Script Output panes.

■ Rollback discards any changes without writing them to the database, and ends the transaction; also clears any output in the Results and Script Output panes.

■ Cancel stops the execution of any statements currently being executed.

■ SQL History displays a dialog box with information about SQL statements that you have executed. You can save statements to a file, or append to or overwrite statements on the worksheet (see Section 4.87, "SQL History List").

■ Execute Explain Plan generates the execution plan for the statement (internally executing the EXPLAIN PLAN statement). To see the execution plan, click the Explain tab. For more information, see Section 1.6.3, "Execution Plan".

■ Autotrace generates trace information for the statement. To see the execution plan, click the Autotrace tab. For more information, see Section 1.6.3, "Execution Plan".

Page 33: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

SQL Developer Concepts and Usage 1-21

■ Clear erases the statement or statements in the Enter SQL Statement box.

■ To the right of these icons is a drop-down list for changing the database connection to use with the worksheet.

The right-click menu includes the preceding SQL Worksheet toolbar operations, plus the following operations:

■ Open File opens a selected SQL script file in the Enter SQL Statement box.

■ Save File saves the contents of the Enter SQL Statement box to a file.

■ Print File prints the contents of the Enter SQL Statement box.

■ Cut, Copy, Paste, and Select All have the same meanings as for normal text editing operations.

■ Query Builder opens the Query Builder dialog box, where you can create a SELECT statement by dragging and dropping table and view names and by graphically specifying columns and other elements of the query.

■ Format SQL formats the SQL statement (capitalizing the names of statements, clauses, keywords, and so on).

■ Describe, if the name of a database object is completely selected, displays a window with tabs and information appropriate for that type of object (see Section 4.37, "Describe Object Window").

■ Save Snippet opens the Save Snippet (User-Defined) dialog box with the selected text as the snippet text.

Enter SQL Statement: The statement or statements that you intend to execute. For multiple statements, each non-PL/SQL statement must be terminated with either a semicolon or (on a new line) a slash (/), and each PL/SQL statement must be terminated with a slash (/) on a new line. SQL keywords are automatically highlighted. To format the statement, right-click in the statement area and select Format SQL.

You can drag some kinds of objects from the Connections navigator and drop them into the Enter SQL Statement box:

■ If you drag and drop a table or view, a SELECT statement is constructed with all columns in the table or view. You can then edit the statement, for example, modifying the column list or adding a WHERE clause.

■ If you drag and drop a function or procedure, a snippet-like text block is constructed for you to edit when including that object in a statement.

Tabs display panes with the following information:

■ Results: Displays the results of the most recent Execute Statement operation.

■ Explain: Displays the output if you clicked the Explain Execution Plan icon (see Section 1.6.3, "Execution Plan").

■ Script Output: Displays the output if you clicked the Run Script icon (see Section 1.6.2, "Script Runner").

■ DBMS Output: Displays the output of DBMS_OUTPUT package statements (see Section 1.6.5, "DBMS Output Pane").

■ OWA Output: Displays Oracle Web Agent (MOD_PLSQL) output (see Section 1.6.6, "OWA Output Pane").

Page 34: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

1-22 SQL Developer Online Help

Related TopicsSQL*Plus Statements Supported and Not Supported in SQL Worksheet

Script Runner

Execution Plan

Using Snippets to Insert Code Fragments

Using the SQL Worksheet for Queries (tutorial)

SQL Developer Concepts and Usage

1.6.1 SQL*Plus Statements Supported and Not Supported in SQL WorksheetThe SQL Worksheet supports some SQL*Plus statements. SQL*Plus statements must be interpreted by the SQL Worksheet before being passed to the database; any SQL*Plus that are not supported by the SQL Worksheet are ignored and not passed to the database.

The following SQL*Plus statements are supported by the SQL Worksheet:

@@@acc[ept]conn[ect]cl[ear]def[ine]desc[ribe]doc[ument]exec[ute]exit (Stops execution and reinstates the specified connection)ho[st]pau[se]pro[mpt]quit (Stops execution and reinstates the specified connection)rem[ark]set pau[se] {ON | OFF}sta[rt]timi[ng]undef[ine]wheneverxqueryThe following SQL*Plus statements are not supported by the SQL Worksheet:

a[ppend]archiveattr[ibute]bre[ak]bti[tle]c[hange]col[ulmn]comp[ute]copydeldisc[onnect]ed[it]gethelpi[nput]l[ist]newpage

Page 35: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

SQL Developer Concepts and Usage 1-23

oradebugpassw[ord]printr[un]recoverrepf[ooter]reph[eader]sav[e]sho[w]shu[tdown]spo[ol]startupstoretti[tle]var[iable]

Related TopicsUsing the SQL Worksheet

1.6.2 Script RunnerThe script runner emulates a limited set of SQL*Plus features. If you do not have SQL*Plus on your system, you can often enter SQL and SQL*Plus statements and execute them by clicking the Run Script icon. The Script Output pane displays the output.

The SQL*Plus features available in the script runner include @, @@, CONNECT, EXIT, QUIT, UNDEFINE, WHENEVER, and substitution variables. For example, to run a script named c:\myscripts\mytest.sql, type @c:\myscripts\mytest in the Enter SQL Statement box, and click the drop-down next to the Execute Statement icon and select Run Script.

The following considerations apply to using the SQL Developer script runner:

■ You cannot use bind variables. (The Execute SQL Statement feature does let you use bind variables of type VARCHAR2, NUMBER, and DATE.)

■ For substitution variables, the syntax &&variable assigns a permanent variable value, and the syntax &variable assigns a temporary (not stored) variable value.

■ For EXIT and QUIT, commit is the default behavior, but you can specify rollback. In either case, the context is reset: for example, WHENEVER command information and substitution variable values are cleared.

■ DESCRIBE works for most, but not all, object types for which it is supported in SQL*Plus.

■ For SQL*Plus commands that are not supported, a warning message is displayed.

■ SQL*Plus comments are ignored.

If you have SQL*Plus available on your system, you may want to use it instead of the script runner. To start SQL*Plus from SQL Developer, click Tools and then SQL*Plus. For information about SQL*Plus, see Section 1.7, "Using SQL*Plus".

Related TopicsUsing the SQL Worksheet

Page 36: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet

1-24 SQL Developer Online Help

1.6.3 Execution PlanThe Execute Explain Plan icon generates the execution plan, which you can see by clicking the Explain tab. The execution plan is the sequence of operations that will be performed to execute the statement. An execution plan shows a row source tree with the hierarchy of operations that make up the statement. For each operation, it shows the ordering of the tables referenced by the statement, access method for each table mentioned in the statement, join method for tables affected by join operations in the statement, and data operations such as filter, sort, or aggregation.

In addition to the row source tree, the plan table displays information about optimization (such as the cost and cardinality of each operation), partitioning (such as the set of accessed partitions), and parallel execution (such as the distribution method of join inputs). For more information, see the chapter about using EXPLAIN PLAN in Oracle Database Performance Tuning Guide.

Related TopicsUsing the SQL Worksheet

1.6.4 Autotrace PaneThe Autotrace pane displays trace-related information when you execute the SQL statement by clicking the Autotrace icon. Most of the specific information displayed is determined by the SQL Developer Preferences for Database: Autotrace Parameters. If you cancel a long-running statement, partial execution statistics are displayed.

This information can help you to identify SQL statements that will benefit from tuning. For example, you may be able to optimize predicate handling by transitively adding predicates, rewriting predicates using Boolean algebra principles, moving predicates around in the execution plan, and so on. For more information about tracing and autotrace, see the chapter about tuning in SQL*Plus User's Guide and Reference.

To use the autotrace feature, the database user for the connection must have the SELECT_CATALOG_ROLE privilege.

Related TopicsUsing the SQL Worksheet

1.6.5 DBMS Output PaneThe PL/SQL DBMS_OUTPUT package enables you to send messages from stored procedures, packages, and triggers. The PUT and PUT_LINE procedures in this package enable you to place information in a buffer that can be read by another trigger, procedure, or package. In a separate PL/SQL procedure or anonymous block, you can display the buffered information by calling the GET_LINE procedure. The DBMS Output pane is used to display the output of that buffer. This pane contains icons and other controls for the following operations:

■ Enable/Disable DBMS Output: Toggles the SET SERVEROUTPUT setting between ON and OFF. Setting server output ON checks for any output that is placed in the DBMS_OUTPUT buffer, and any output is displayed in the pane.

■ Clear: Erases the contents of the pane.

■ Save: Saves the contents of the pane to a file that you specify.

■ Print: Prints the contents of the pane.

Page 37: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

SQL Developer Concepts and Usage 1-25

■ Buffer Size: For databases before Oracle Database 10.2, limits the amount of data that can be stored in the DBMS_OUTPUT buffer. The buffer size can be between 1 and 1000000 (1 million).

■ Poll: The interval (in seconds) at which SQL Developer checks the DBMS_OUTPUT buffer to see if there is data to print. The poll rate can be between 1 and 15.

Related TopicsUsing the SQL Worksheet

1.6.6 OWA Output PaneOWA (Oracle Web Agent) or MOD_PLSQL is an Apache (Web Server) extension module that enables you to create dynamic Web pages from PL/SQL packages and stored procedures. The OWA Output pane enables you to see the HTML output of MOD_PLSQL actions that have been executed in the SQL Worksheet. This pane contains icons for the following operations:

■ Enable/Disable OWA Output: Enables and disables the checking of the OWA output buffer and the display of OWA output to the pane.

■ Clear: Erases the contents of the pane.

■ Save: Saves the contents of the pane to a file that you specify.

■ Print: Prints the contents of the pane.

Related TopicsUsing the SQL Worksheet

1.7 Using SQL*PlusYou can use the SQL*Plus command-line interface to enter SQL and PL/SQL statements accessing the database associated with a specified connection. To display the SQL*Plus command window, from the Tools menu, select SQL*Plus.

To use this feature, the system on which you are using SQL Developer must have an Oracle home directory or folder, with a SQL*Plus executable under that location. If the location of the SQL*Plus executable is not already stored in your SQL Developer preferences, you are asked to specify its location (see Section 4.88, "SQL*Plus Location").

If you do not have a SQL*Plus executable on your system, you can execute some SQL*Plus statements using the SQL Worksheet (see Section 1.6.1, "SQL*Plus Statements Supported and Not Supported in SQL Worksheet"), and you can also use the SQL Developer script runner feature to emulate a limited set of SQL*Plus features (see Section 1.6.2, "Script Runner").

For more information about using SQL*Plus, see SQL*Plus: Usage Information.

Related TopicsSQL*Plus Location (dialog box)

SQL*Plus: Usage Information

SQL*Plus Statements Supported and Not Supported in SQL Worksheet

Script Runner

Page 38: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Snippets to Insert Code Fragments

1-26 SQL Developer Online Help

SQL Developer Concepts and Usage

1.8 Using Snippets to Insert Code FragmentsSnippets are code fragments, such as SQL functions, Optimizer hints, and miscellaneous PL/SQL programming techniques. Some snippets are just syntax, and others are examples. You can insert and edit snippets when you are using the SQL Worksheet or creating or editing a PL/SQL function or procedure.

To display snippets, from the View menu, select Snippets. In the snippets window (on the right side), use the drop-down to select a group (such as Aggregate Functions or Character Functions). In most cases, the fragments in each group do not represent all available objects in that logical grouping, or all formats and options of each fragment shown. For complete and detailed information, see the Oracle Database documentation.

A Snippets button is placed in the right window margin, so that you can display the snippets window if it becomes hidden.

To insert a snippet into your code in a SQL Worksheet or in a PL/SQL function or procedure, drag the snippet from the snippets window and drop it into the desired place in your code; then edit the syntax so that the SQL function is valid in the current context. To see a brief description of a SQL function in a tooltip, hold the pointer over the function name.

For example, you could type SELECT and then drag CONCAT(char1, char2) from the Character Functions group. Then, edit the CONCAT function syntax and type the rest of the statement, such as in the following:

SELECT CONCAT(title, ' is a book in the library.') FROM books;

Related TopicsUser-Defined Snippets

Running and Debugging Functions and Procedures

Using the SQL Worksheet

1.8.1 User-Defined SnippetsYou can create and edit snippets. User-defined snippets are intended mainly to enable you to supplement the Oracle-supplied snippets, although you are also permitted to replace an Oracle-supplied snippet with your own version.

When you create a user-defined snippet, you can add it to one of the Oracle-supplied snippet categories (such as Aggregate Functions) or to a category that you create. If you add a snippet to an Oracle-supplied category and if your snippet has the same name as an existing snippet, your snippet definition replaces the existing one. (If you later upgrade to a new version of SQL Developer and if you choose to preserve your old settings, your old user-defined snippets will replace any Oracle-supplied snippets of the same name in the new version of SQL Developer.)

To create a snippet, do any of the following:

■ Open the Snippets window and click the Add User Snippets icon.

■ Select text for the snippet in the SQL Worksheet window, right-click, and select Save Snippet.

■ Click the Add User Snippet icon in the Edit Snippets (User-Defined) dialog box.

Page 39: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

SQL Developer Concepts and Usage 1-27

To edit an existing user-defined snippet, click the Edit User Snippets icon in the Snippets window.

Information about user-defined snippets is stored in a file named UserSnippets.xml under the directory for user-specific information. For information about the location of this information, see Section 1.12, "Location of User-Related Information".

Related TopicsSave Snippet (User-Defined) (dialog box)

Edit Snippets (User-Defined) (dialog box)

1.9 Using DB Object Search to Find Database ObjectsYou can use the DB Object Search pane to find database objects associated with an Oracle database connection and to open editing panes to work with those objects. To move to the Db Object Search pane or to display it if it is not visible, from the View menu, select DB Object Search.

The following figure shows the DB Object Search pane with results from a search for all objects associated with a connection named stacd05_hr that start with EMPLOYEE. (The pane may be displayed on the right side of the SQL Developer window or at the bottom.)

To find objects for an Oracle connection, click Search, select the connection name, enter an object name or a string containing one or more wildcard characters, and press the Enter key. To view or edit one of the objects, double-click its name in the DB Object Search pane.

You can detach, move, and dock the DB Object Search pane by clicking and holding the tab, and dragging and positioning the pane.

Related TopicsDatabase Objects

1.10 ReportsSQL Developer provides many reports about the database and its objects. You can also create your own user-defined reports. To display reports, click the Reports tab on the left side of the window (see SQL Developer User Interface). If this tab is not visible, select View and then Reports.

Individual reports are displayed in tabbed panes on the right side of the window; and for each report, you can select (in a drop-down control) the database connection for which to display the report. For reports about objects, the objects shown are only those visible to the database user associated with the selected database connection, and the

Page 40: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

1-28 SQL Developer Online Help

rows are usually ordered by Owner. The detail display pane for a report includes the following icons at the top:

■ Freeze View (the pin) keeps that report in the SQL Developer window when you click another report in the Reports navigator; a separate tab and detail view pane are created for that other report. If you click the pin again, the report’s detail view pane is available for reuse.

■ Run Report updates the detail view pane display by querying the database for the latest information.

■ Run Report in SQL Worksheet displays the SQL statement used to retrieve the information for a report in a SQL Worksheet pane, where you can view, edit, and run the statement (see Section 1.6, "Using the SQL Worksheet").

The time required to display specific reports will vary, and may be affected by the number and complexity of objects involved, and by the speed of the network connection to the database.

For most reports that contain names of database objects, you can double-click the object name in the report display pane (or right-click the object name and select Go To) to display that object in a detail view pane, just as if you had selected that object using the Connections navigator.

To export a report into an XML file that can be imported later, right-click the report name in the Reports navigator display and select Export. To import a report that had previously been exported, select the name of the report folder name (such as a user-defined folder) in which to store the imported report, right-click, and select Import.

You can create a shared report from an exported report by clicking Tools, then Preferences, and using the Database: User-Defined Extensions pane to add a row with Type as REPORT and Location specifying the exported XML file. The next time you restart SQL Developer, the Reports navigator will have a Shared Reports folder containing that report.

To import connections that had previously been exported (adding them to any connections that may already exist in SQL Developer), right-click Connections in the Connections navigator display and select Import Connections. Use the dialog box to specify the connections to be imported (see Section 4.16, "Export/Import Connection Descriptors").

Reports are grouped in the following categories:

About Your Database reports list release information about the database associated with the connection.

Database Administration reports list usage information about system resources.

Table reports list information about tables owned by the user associated with the specified connection. These reports can help you to better understand the metadata and data. The table reports include Quality Assurance reports that indicate possible logical design flaws and sources of run-time performance problems.

PL/SQL reports list information about your PL/SQL objects and allow you to search the source of those objects.

Security reports list privilege-related information about the database.

XML reports list information about XML objects.

Jobs reports list information about jobs running on the database.

Streams reports list information about stream rules.

Page 41: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

SQL Developer Concepts and Usage 1-29

All Objects reports list information about all objects accessible to the user associated with the specified database connection, not just objects owned by the user.

Data Dictionary reports list information about the data dictionary views that are accessible in the database. Examples of data dictionary views are ALL_OBJECTS and USER_TABLES.

User Defined reports are any customized reports that you have created.

Bind Variables for ReportsFor some reports, you are prompted for bind variables before the report is generated. These bind variables enable you to further restrict the output. The default value for all bind variables is null, which implies no further restrictions. To specify a bind variable, select the variable name and type an entry in the Value field. Any bind variable values that you enter are case insensitive, all matches are returned where the value string appears anywhere in the name of the relevant object type.

Related TopicsSQL Developer Concepts and Usage

SQL Developer User Interface

Using the SQL Worksheet

SQL Developer Concepts and Usage

1.10.1 About Your Database reportsThe About Your Database reports list release information about the database associated with the selected connection. The reports include Version Banner (database settings) and National Language Support Parameters (NLS_xxx parameter values for globalization support).

Related TopicsReports

1.10.2 Database Administration reportsDatabase Administration reports list usage information about system resources. This information can help you to manage storage, user accounts, and sessions efficiently. (The user for the database connection must have the DBA role to see most Database Administration reports.)

Database Parameters: Provide information about all database parameters or only those parameters that are not set to their default values.

Storage: Provide usage and allocation information for tablespaces and data files.

Sessions: Provide information about sessions, selected and ordered by various criteria.

Cursors: Provide information about cursors, including cursors by session (including open cursors and cursor details.

All Tables: Contains the reports that are also grouped under Table reports, including Quality Assurance reports.

Top SQL: Provide information about SQL statements, selected and ordered by various criteria. This information might help you to identify SQL statements that are being executed more often than expected or that are taking more time than expected.

Page 42: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

1-30 SQL Developer Online Help

Users: Provide information about database users, selected and ordered by various criteria. For example, you can find out which users were created most recently, which user accounts have expired, and which users use object types and how many objects each owns.

Related TopicsReports

1.10.3 Table reportsTable reports list information about tables owned by the user associated with the specified connection. This information is not specifically designed to identify problem areas; however, depending on your resources and requirements, some of the information might indicate things that you should monitor or address.

For table reports, the owner is the user associated with the database connection.

User Tables: Displays information about either all tables or those tables containing the string that you specify in the Enter Bind Variables dialog box (uncheck Null in that box to enter a string).

Columns: For each table, lists each column, its data type, and whether it can contain a null value.

Datatype Occurrences: For each table owner, lists each data type and how many times it is used.

Comments for tables and columns: For each table and for each column in each table, lists the descriptive comments (if any) associated with it. Also includes a report of tables without comments. If database developers use the COMMENT statement when creating or modifying tables, this report can provide useful information about the purposes of tables and columns

Constraints: For each table, lists each associated constraint, including its type (unique constraint, check constraint, primary key, foreign key) and status (enabled or disabled).

Enabled Constraints and Disabled Constraints: For each constraint with a status of enabled or disabled, lists the table name, constraint name, constraint type (unique constraint, check constraint, primary key, foreign key), and status. A disabled constraint is not enforced when rows are added or modified; to have a disabled constraint enforced, you must edit the table and set the status of the constraint to Enabled (see the appropriate tabs for the Create/Edit Table (with advanced options) dialog box).

Primary Key Constraints: For primary key constraint, lists information that includes the owner, the table name, the constraint name, the constraint status (enabled or disabled), and the column name.

Unique Constraints: For each unique constraint, lists information that includes the owner, the table name, the constraint name, the constraint status (enabled or disabled), and the column name.

Foreign Key Constraints: For each foreign key constraint, lists information that includes the owner, the table name, the constraint name, the column that the constraint is against, the table that the constraint references, and the constraint in the table that is referenced.

Page 43: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

SQL Developer Concepts and Usage 1-31

Check Constraints: For each check constraint, lists information that includes the owner, the table name, the constraint name, the constraint status (enabled or disabled), and the constraint specification.

Statistics: For each table, lists statistical information, including when it was last analyzed, the total number of rows, the average row length, and the table type. In addition, specialized reports order the results by most rows and largest average row length.

Storage - Tables by Tablespace: For each tablespace, lists the number of tables and the total number of megabytes currently allocated for the tables.

Storage - Tablespaces: For each table, lists the tablespace for the table and the number of megabytes currently allocated for the table.

Organization: Specialized reports list information about partitioned tables, clustered tables, and index-organized tables.

Quality Assurance reportsQuality assurance reports are table reports that identify conditions that are not technically errors, but that usually indicate flaws in the database design. These flaws can result in various problems, such as logic errors and the need for additional application coding to work around the errors, as well as poor performance with queries at run time.

Tables without Primary Keys: Lists tables that do not have a primary key defined. A primary key is a column (or set of columns) that uniquely identifies each row in the table. Although tables are not required to have a primary key, it is strongly recommended that you create or designate a primary key for each table. Primary key columns are indexed, which enhances performance with queries, and they are required to be unique and not null, providing some "automatic" validation of input data. Primary keys can also be used with foreign keys to provide referential integrity.

Tables without Indexes: Lists tables that do not have any indexes. If a column in a table has an index defined on it, queries that use the column are usually much faster and more efficient than if there is no index on the column, especially if there are many rows in the table and many different data values in the column.

Tables with Unindexed Foreign Keys: Lists any foreign keys that do not have an associated index. A foreign key is a column (or set of columns) that references a primary key: that is, each value in the foreign key must match a value in its associated primary key. Foreign key columns are often joined in queries, and an index usually improves performance significantly for queries that use a column. If an unindexed foreign key is used in queries, you may be able to improve run-time performance by creating an index on that foreign key.

Related TopicsReports

1.10.4 PL/SQL reportsPL/SQL reports list information about PL/SQL packages, function, and procedures, and about types defined in them.

Program Unit Arguments: For each argument (parameter) in a program unit, lists the program unit name, the argument position (1, 2, 3, and so on), the argument name, and whether the argument is input-only (In), output-only (Out), or both input and output (In/Out).

Page 44: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

1-32 SQL Developer Online Help

Unit Line Counts: For each PL/SQL object, lists the number of source code lines. This information can help you to identify complex objects (for example, to identify code that may need to be simplified or divided into several objects).

Search Source Code: For each PL/SQL object, lists the source code for each line, and allows the source to be searched for occurrences of the specified variable.

Related TopicsReports

1.10.5 Security reportsSecurity reports list information about users that have been granted privileges, and in some cases about the users that granted the privileges. This information can help you (or the database administrator if you are not a DBA) to understand possible security issues and vulnerabilities, and to decide on the appropriate action to take (for example, revoking certain privileges from users that do not need those privileges).

Object Grants: For each privilege granted on a specific table, lists the user that granted the privilege, the user to which the privilege was granted, the table, the privilege, and whether the user to which the privilege was granted can grant that privilege to other users.

Column Privileges: For each privilege granted on a specific column in a specific table, lists the user that granted the privilege, the user to which the privilege was granted, the table, the privilege, and whether the user to which the privilege was granted can grant that privilege to other users.

Role Privileges: For each granted role, lists the user to which the role was granted, the role, whether the role was granted with the ADMIN option, and whether the role is designated as a default role for the user.

System Privileges: For each privilege granted to the user associated with the database connection, lists the privilege and whether it was granted with the ADMIN option.

Auditing: Lists information about audit policies.

Encryption: Lists information about encrypted columns.

Policies: Lists information about policies.

Related TopicsReports

1.10.6 XML reportsXML reports list information about XML objects.

XML Schemas: For each user that owns any XML objects, lists information about each object, including the schema URL of the XSD file containing the schema definition.

Related TopicsReports

1.10.7 Jobs reportsJobs reports list information about jobs running on the database.

Page 45: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

SQL Developer Concepts and Usage 1-33

Your Jobs: Lists information about each job for which the user associated with the database connection is the log user, privilege user, or schema user. The information includes the start time of its last run, current run, and next scheduled run.

All Jobs: Lists information about all jobs running on the database. The information includes the start time of its last run, current run, and next scheduled run.

Related TopicsReports

1.10.8 Streams reportsStreams reports list information about stream rules.

Your Stream Rules: Lists information about each stream rule for which the user associated with the database connection is the rule owner or rule set owner. The information includes stream type and name, rule set owner and name, rule owner and name, rule set type, streams rule type, and subsetting operation.

All Stream Rules: Lists information about all stream rules. The information includes stream type and name, rule set owner and name, rule owner and name, rule set type, streams rule type, and subsetting operation.

Related TopicsReports

1.10.9 All Objects reportsAll Objects reports list information about objects visible to the user associated with the database connection.

All Objects: For each object, lists the owner, name, type (table, view, index, and so on), status (valid or invalid), the date it was created, and the date when the last data definition language (DDL) operation was performed on it. The Last DDL date can help you to find if any changes to the object definitions have been made on or after a specific time.

Invalid Objects: Lists all objects that have a status of invalid.

Object Count by Type: For each type of object associated with a specific owner, lists the number of objects. This report might help you to identify users that have created an especially large number of objects, particularly objects of a specific type.

Collection Types: Lists information about for each collection type. The information includes the type owner, element type name and owner, and type-dependent specific information.

Dependencies: For each object with references to it, lists information about references to (uses of) that object.

Related TopicsReports

1.10.10 Data Dictionary reportsData Dictionary reports list information about the data dictionary views that are accessible in the database. Examples of data dictionary views are ALL_OBJECTS and USER_TABLES.

Page 46: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

1-34 SQL Developer Online Help

Dictionary Views: Lists each Oracle data dictionary view and (in most cases) a comment describing its contents or purpose.

Dictionary View Columns: For each Oracle data dictionary view, lists information about the columns in the view.

Related TopicsReports

1.10.11 User Defined reportsUser Defined reports are any reports that are created by SQL Developer users. To create a user-defined report, right-click the User Defined node under Reports and select Add Report. A dialog box is displayed in which you specify the report name and the SQL query to retrieve information for the report (see Section 4.30, "Create/Edit User Defined Report").

You can organize user-defined reports in folders, and you can create a hierarchy of folders and subfolders. To create a folder for user-defined reports, right-click the User Defined node or any folder name under that node and select Add Folder (see Section 4.31, "Create/Edit User Defined Report Folder").

Information about user-defined reports, including any folders for these reports, is stored in a file named UserReports.xml under the directory for user-specific information. For information about the location of this information, see Section 1.12, "Location of User-Related Information".

For examples of creating user-defined reports, see:

■ Section 1.10.11.1, "User-Defined Report Example: Chart"

■ Section 1.10.11.2, "User-Defined Report Example: Dynamic HTML"

Related TopicsReports

Create/Edit User Defined Report

Create/Edit User Defined Report Folder

Location of User-Related Information

1.10.11.1 User-Defined Report Example: ChartThis example creates a report displayed as a chart. It uses the definition of the EMPLOYEES table from the HR schema, which is a supplied sample schema.

Right-click on User Defined Reports and select Add Report. In the Add Report dialog box, specify a report name; for Style, select Chart; and for SQL, enter the following:

select m.department_id, e.last_name, e.salaryfrom employees m, employees ewhere e.employee_id = m.employee_idorder by 1The preceding query lists the last name and salary of each employee in each department, grouping the results by department ID (10, 20, 30, ... 110).

Click the Chart Details tab near the bottom of the box; for Chart Type, select BAR_VERT_STACK (bar chart, stacked vertically); and click Apply.

Use the Reports navigator to view the newly created user-defined report. For Connection, specify one that connects to the HR sample schema.

Page 47: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Reports

SQL Developer Concepts and Usage 1-35

The report is displayed as a chart, part of which is shown in the following illustration. For example, as you can see, department 50 has mainly employees with the lowest salaries, and department 90 consists of the three highest-paid employees.

1.10.11.2 User-Defined Report Example: Dynamic HTMLThis example creates a report using one or more PL/SQL DBMS_OUTPUT statements, so that the report is displayed as dynamic HTML.

Right-click on User Defined Reports and select Add Report. In the Add Report dialog box, specify a report name; for Style, select plsql-dbms_output; and for SQL, enter the following:

begindbms_output.put_line ('<H1> This is Level-1 Heading </H1>');dbms_output.put_line ('<H2> This is a Level-2 Heading </H2>');

Page 48: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

1-36 SQL Developer Online Help

dbms_output.put_line ('<p> This is regular paragraph text. </p>');end;Click Apply.

Use the Reports navigator to view the newly created user-defined report. For Connection, specify any from the list. (This report does not depend on a specific connection of table.).

The report is displayed as formatted HTML output.

1.11 SQL Developer PreferencesYou can customize many aspects of the SQL Developer interface and environment by modifying SQL Developer preferences according to your preferences and needs. To modify SQL Developer preferences, select Tools, then Preferences.

Information about SQL Developer preferences is stored under the directory for user-specific information. For information about the location of this information, see Section 1.12, "Location of User-Related Information".

Most preferences are self-explanatory, and this topic explains only those whose meaning and implications are not obvious. Some preferences involve performance or system resource trade-offs (for example, enabling a feature that adds execution time), and other preferences involve only personal aesthetic taste. The preferences are grouped in the following categories.

1.11.1 EnvironmentThe Environment pane contains options that affect the startup and overall behavior and appearance of SQL Developer. You can specify that certain operations be performed automatically at specified times, with the trade-off usually being the extra time for the operation as opposed to the possibility of problems if the operation is not performed automatically (for example, if you forget to perform it when you should).

The undo level (number of previous operations that can be undone) and navigation level (number of open files) values involve slight increases or decreases system resource usage for higher or lower values.

Automatically Reload Externally Modified Files: If this option is checked, any files open in SQL Developer that have been modified by an external application are updated when you switch back to SQL Developer, overwriting any changes that you might have made. If this option is not checked, changes that you make in SQL Developer overwrite any changes that might have been made by external applications.

Silently Reload When File Is Unmodified: If this option is checked, you are not asked if you want to reload files that have been modified externally but not in SQL Developer. If this option is not checked, you are asked if you want to reload each file that has been modified externally, regardless of whether it has been modified in SQL Developer,

Environment: Dockable WindowsThe Dockable Windows pane configures the behavior of dockable windows and the shapes of the four docking areas of SQL Developer: top, bottom, left, and right.

Dockable Windows Always on Top: If this option is checked, dockable windows always remain visible in front of other windows.

Windows Layout: Click the corner arrows to lengthen or shorten the shape of each docking area.

Page 49: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

SQL Developer Concepts and Usage 1-37

Environment: Local HistoryThe Local History pane controls whether information about editing operations on files opened within SQL Developer is kept. If local history is enabled, you can specify how long information is retained and the maximum number of revisions for each file.

Environment: LogThe Log pane configures the colors of certain types of log messages and the saving of log messages to log files.

Save Logs to File: If this option is checked, all output to the Messages - Log window is saved to log files, where the file name reflects the operation and a timestamp. You are also asked to specify a Log Directory; and if the specified directory does not already exist, it is created. Note that if you save log information to files, the number of these files can become large.

Maximum Log Lines: The maximum number of lines to store in each log file.

Related TopicsSQL Developer Preferences

1.11.2 Accelerators (Keyboard Shortcuts)The Accelerators pane enables you to view and customize the accelerator key mappings (keyboard shortcuts) for SQL Developer.

Category: Select All or a specific category (Code Editor, Database, Debug, Edit, and so on), to control which actions are displayed.

Actions: The actions for the selected category. When you select an action, any existing accelerator key mappings are displayed.

Accelerators: Any existing key mappings for the selected action. To remove an existing key mapping, select it and click Remove.

New Accelerator: The new accelerator key to be associated with the action. Press and hold the desired modifier key, then press the other key. For example, to associate Ctrl+J with an action, press and hold the Ctrl key, then press the j key. If any actions are currently associated with that accelerator key, they are listed in the Current Assignment box.

Current Assignment: A read-only display of the current action, if any, that is mapped to the accelerator key that you specified in the New Accelerator box.

Load Preset: Enables you to load a set of predefined key mappings for certain systems and external editing applications. If you load any preset key mappings that conflict with changes that you have made, your changes are overwritten.

Related TopicsSQL Developer Preferences

1.11.3 Code EditorThe Code Editor pane contains general options that affect the appearance and behavior of SQL Developer when you edit functions, procedures, and packages.

Code Editor: BookmarksThe Bookmarks pane contains options that determine the persistence and search behavior for bookmarks that you create when using the code editor.

Page 50: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

1-38 SQL Developer Online Help

Code Editor: Caret BehaviorThe Caret Behavior pane contains options that determine the shape, color, and blinking characteristics of the caret (cursor) in the code editor.

Code Editor: Code InsightThe Code Insight pane contains options for the logical completion (autocomplete options) of keywords and names while you are coding in the SQL Worksheet.

When you press Ctrl+Space, code insight provides a context-sensitive popup window that can help you select parameter names. Completion insight provides you with a list of possible completions at the insertion point that you can use to auto-complete code you are editing. This list is based on the code context at the insertion point. To exit code insight at any time, press Esc.

You can enable or disable both completion and parameter insight, as well as set the time delay for the popup windows.

Code Editor: Code Insight: CompletionThe Code Insight: Completion pane contains options for refining the behavior when matching items are found. For more information, see the explanation for Code Editor: Code Insight.

Code Editor: DisplayThe Display pane contains general options for the appearance and behavior of the code editor.

Text Anti-Aliasing allows smooth-edged characters where possible.

Code Folding Margin allows program blocks in procedures and functions to be expanded and collapsed in the display.

Visible Right Margin renders a right margin that you can set to control the length of lines of code.

Automatic Brace Matching controls the highlighting of opening parentheses and brackets and of blocks when a closing parenthesis or bracket is typed.

Code Editor: Find OptionsThe Find Options pane determines which options are used by default at SQL Developer startup for find or find and replace operations. You can choose whether to use the options in effect from the last SQL Developer session or to use specified options.

Code Editor: FontsThe Fonts pane specifies text font options for the code editor.

Display Only Fixed-Width Fonts: If this option is checked, the display of available font names is restricted to fonts where all characters have the same width. (Fixed-width fonts are contrasted with proportional-width fonts.)

Code Editor: Line GutterThe Line Gutter pane specifies options for the line gutter (left margin of the code editor).

Show Line Numbers: If this option is checked, lines are numbered.

Page 51: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

SQL Developer Concepts and Usage 1-39

Enable Line Selection by Click-Dragging: If this option is checked, you can select consecutive lines in the editor by clicking in the gutter and dragging the cursor without releasing the mouse button.

Code Editor: PrintingThe Printing pane specifies options for printing the contents of the code editor. The Preview pane sample display changes as you select and deselect options.

Code Editor: Printing HTMLThe Printing HTML pane specifies options for printing HTML files from the code editor.

Code Editor: Syntax ColorsThe Syntax Colors pane specifies colors for different kinds of syntax elements.

Code Editor: Undo BehaviorThe Undo Behavior pane specifies options for the behavior of undo operations (Ctrl+Z, or Edit, then Undo). Only consecutive edits of the same type are considered; for example, inserting characters and deleting characters are two different types of operation.

Allow Navigation-Only Changes to be Undoable: If this option is checked, navigation actions with the keyboard or mouse can be undone. If this option is not checked, navigation actions cannot be undone, and only actual changes to the text can be undone.

Related TopicsSQL Developer Preferences

1.11.4 DatabaseThe Database pane sets properties for the database connection.

Validate date and time default values: If this option is checked, date and time validation is used when you open tables.

SQL*Plus Executable: The Windows path or Linux xterm command for the SQL*Plus executable. If there is no $ORACLE_HOME on your system, there is no SQL*Plus executable, and you cannot use SQL*Plus with SQL Developer; however, you can still use many SQL*Plus commands in the SQL Worksheet (see Section 1.6, "Using the SQL Worksheet", and especially SQL*Plus Statements Supported and Not Supported in SQL Worksheet).

Default path for storing export: Default path of the directory or folder under which to store output files when you perform an export operation. To see the current default for your system, click the Browse button next to this field.

Database: Advanced ParametersThe Advanced Parameters pane specifies options such as the SQL array fetch size and display options for null values.

Database: Autotrace ParametersThe Autotrace Parameters pane specifies information to be displayed on the Autotrace pane in the SQL Worksheet.

Page 52: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

1-40 SQL Developer Online Help

Database: NLS ParametersThe NLS Parameters pane specifies values for globalization support parameters, such as the language, territory, sort preference, and date format. These parameter values are used for SQL Developer session operations, such as for statements executed using the SQL Worksheet and for the National Language Support Parameters report. Specifying values in this preferences pane does not apply those values to the underlying database itself. To change the database settings, you must change the appropriate initialization parameters and restart the database.

Note that SQL Developer does not use default values from the current system for globalization support parameters; instead, SQL Developer, when initially installed, by default uses parameter values that include the following:

NLS_LANG,"AMERICAN"NLS_TERR,"AMERICA"NLS_CHAR,"AL32UTF8"NLS_SORT,"BINARY"NLS_CAL,"GREGORIAN"NLS_DATE_LANG,"AMERICAN"NLS_DATE_FORM,"DD-MON-RR"

Database: ObjectViewer ParametersThe ObjectViewer Parameters pane specifies whether to freeze object viewer windows, and display options for the output. The display options will affect the generated DDL on the SQL tab.

Database: Third Party JDBC DriversThe Third Party JDBC Drivers pane specifies drivers to be used for connections to third-party (non-Oracle) databases, such as MySQL or Microsoft SQL Server. (You do not need to add a driver for connections to Microsoft Access databases.) To add a driver, click Add Entry and select the path for the driver (for example, C:\Program Files\MySQL\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar).

To find a specific third-party JDBC driver, see the Web site for the vendor (for example, http://www.mysql.com for the MySQL driver).

You must specify a third-party JDBC driver before you can create a database connection to a third-party database of that associated type. (See the tabs for creating connections to third-party databases in the Create/Edit/Select Database Connection dialog box.)

Database: User-Defined ExtensionsThe User-Defined Extensions pane specifies user-defined extensions that have been added. You can use this pane to add extensions that are not available through the Check for Updates feature. (For more information about extensions and checking for updates, see Section 1.11.7, "Extensions".)

One use of the Database: User-Defined Extensions pane is to create a Shared Reports folder and to include an exported report under that folder: click Add Row, specify Type as REPORT, and for Location specify the XML file containing the exported report. The next time you restart SQL Developer, the Reports navigator will have a Shared Reports folder containing that report

Database: Worksheet ParametersAutocommit in SQL Worksheet: If this option is checked, a commit operation is automatically performed after each INSERT, UPDATE, or DELETE statement executed

Page 53: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

SQL Developer Concepts and Usage 1-41

using the SQL Worksheet. If this option is not checked, a commit operation is not performed until you execute a COMMIT statement.

Open a worksheet on connect: If this option is checked, a SQL Worksheet window for the connection is automatically opened when you open a database connection. If this option is not checked, you must use the Open SQL Worksheet right-click command or toolbar icon to open a SQL Worksheet.

Max rows to print in a script: Limits the number of rows displayed.

Default path to look for scripts: The default directory where SQL Developer looks when you run a script (using @).

Save bind variables to disk on exit: If this option is checked, bind variables that you enter when running a script are saved on disk for reuse. If you do not want bind variable values stored on disk (for security or other reasons), be sure not to check this option.

Database: Worksheet Parameters: General Export ParametersCustom Export Delimiter: The character to be used as the delimiter when you export table data in CSV format. This option enables you to use a character other than the default comma (,) as the CSV delimiter.

Related TopicsUsing SQL*Plus

SQL Developer Preferences

1.11.5 DebuggerThe Debugger pane contains general options for the SQL Developer debugger. Other panes contain additional specific kinds of debugger options.

Debugger: BreakpointsThe Breakpoints pane sets the columns to appear in the Breakpoints pane and the scope of each breakpoint.

Debugger: Breakpoints: Default ActionsThe Breakpoints: Default Actions pane sets defaults for actions to occur at breakpoints. These actions are the same as on the Actions tab in the Create/Edit Breakpoint dialog box.

Debugger: DataThe Data pane enables you to control the columns to appear in the debugger Data pane and aspects of how the data is displayed.

Debugger: InspectorThe Inspector pane enables you to control the columns to appear in the debugger Inspector pane and aspects of how the data is displayed.

Debugger: Smart DataThe Smart Data pane enables you to control the columns to appear in the debugger Smart Data pane and aspects of how the data is displayed.

Page 54: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

1-42 SQL Developer Online Help

Debugger: StackThe Stack pane enables you to control the columns to appear in the debugger Stack pane and other options.

Debugger: WatchesThe Watches pane enables you to control the columns to appear in the debugger Watches pane and aspects of how the data is displayed.

Related TopicsSQL Developer Preferences

1.11.6 DocumentationThe Documentation pane provides options for the display of SQL Developer online help.

Display in Window: If this option is checked, help is displayed in a separate window. If this option is not checked, help is displayed in a pane in the SQL Developer User Interface.

Show Tabs: Controls which tabs appear in the Help Center pane (Table of Contents, Index, Full Text Search).

Related TopicsUsing the Help

SQL Developer Preferences

1.11.7 ExtensionsThe Extensions pane determines which optional extensions SQL Developer uses when it starts. (SQL Developer also uses some mandatory extensions, which users cannot remove or disable.) If you change any settings, you must exit SQL Developer and restart it for the new settings to take effect.

Extensions to Use: Controls the specific optional SQL Developer extensions to use at startup.

Check for Updates: Checks for any updates to the selected optional SQL Developer extensions, as well as any mandatory extensions. (If the system you are using is behind a firewall, see the SQL Developer user preferences for Web Browser and Proxy.)

Automatically Check for Updates: If this option is checked, SQL Developer automatically checks for any updates to the selected optional SQL Developer extensions and any mandatory extensions at startup.

Related TopicsSQL Developer Preferences

1.11.8 File TypesThe File Types pane determines which file types and extensions will be opened by default by SQL Developer. The display shows each file extension, the associated file type, and a check mark if files with that extension are to be opened by SQL Developer be default, such as when a user double-clicks the file name.

Page 55: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

SQL Developer Concepts and Usage 1-43

Details area at bottom: You can modify the file type, content type (text or binary), and whether to open files with this extension automatically by SQL Developer.

To have files with a specific extension be opened by default by SQL Developer, click the file extension in the list, then check Open with SQL Developer in the Details area. This overrides any previous application association that may have been in effect for that file extension.

To add a file extension, click Add and specify the file extension (including the period). After adding the extension, you can modify its associated information by selecting it and using the Details area.

Related TopicsConfigure File Type Associations (dialog box)

SQL Developer Preferences

1.11.9 MigrationThe Migration pane contains options that affect the behavior of SQL Developer when you migrate schema objects and data from third-party databases to an Oracle database.

Default Repository: Migration repository to be used for storing the captured models and converted models. For information about migrating third-party databases to Oracle, including how to create a migration repository, see Chapter 2.

Migration: Data Move OptionsThe Data Move Options pane contains options that affect the behavior when you migrate data from third-party databases to Oracle Database tables generated by the migration.

Number of Parallel Data Move Streams: The number of internal connections created for simultaneous movement of data from the source database to the Oracle tables. Higher values may shorten the total time required, but will use more database resources during that time.

Number of Rows to Commit After: During the data move operation, Oracle pauses to perform an automatic internal commit operation after each number of rows that you specify are moved from the source database to Oracle tables.

Lower values will cause a successful move operation to take more time; but if a failure occurs, it is likely that more source records will exist in the Oracle tables and that if the move operation is resumed, fewer source records will need to be moved. Higher values will cause a successful move operation to take less time; but if a failure occurs, it is likely that fewer source records will exist in the Oracle tables and that is the move operation is resumed, more source records will need to be moved.

Offline: The offline data move options determine the results of files created when you click Migration, then Generate Scripts, then Generate Data Move Scripts.

Offline Data Script Directory: Default location for scripts for offline data move operations.

End of Column Delimiter: String to indicate end of column.

End of Row Delimiter: String to indicate end of row.

Page 56: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

1-44 SQL Developer Online Help

Migration: Generation OptionsThe Generation Options pane contains options that determine the results of files created when you click Migration, then Generate Scripts, then Generate Oracle DDL.

One single file, A file per object, or A file per database: Determines how many files are created and their relative sizes. Having more files created might be less convenient, but may allow more flexibility with complex migration scenarios. (See also the Maximum Number of Lines option.)

Output Directory: Default location in which the files will be created.

Implement ’CREATE’ as ’CREATE OR REPLACE’: Causes CREATE statements in source database objects to be implemented using CREATE OR REPLACE when the Oracle syntax allows this.

Generate Comments: Generates comments in the Oracle SQL statements.

Generate Controlling Script: Generates a "master" script for running all the required files.

Maximum Number of Lines: Sets a maximum number of lines for each file; you then specify the number.

Least Privilege Schema Migration: For migrating schema objects in a converted model to Oracle, causes CREATE USER, GRANT, and CONNECT statements not to be generated in the output scripts. You must then ensure that the scripts are run using a connection with sufficient privileges. You can select this option if the database user and connection that you want to use to run the scripts already exist, or if you plan to create them.

Generate Data Move User: For data move operations, creates an additional database user with extra privileges to perform the operation. It is recommended that you delete this user after the operation. This option is provided for convenience, and is suggested unless you want to perform least privilege migrations or unless you want to grant privileges manually to a user for the data move operations. This option is especially recommended for multischema migrations, such as when not all tables belong to a single user.

Migration: Translation OptionsThe Translation Options pane contains options that relate to conversion of stored procedures and functions from their source database format to Oracle format.

Default Source Date Format: Default data format mask for dates in the source data.

Translation Diff Viewer: Several options affect the display when you use the translation differences viewer feature.

Colors of Levels:

Levels 0 - 3:

Migration: Plugin Preferences: Microsoft SQL ServerThe Plugin Preferences: Microsoft SQL Server pane contains options that relate to conversion of Microsoft SQL Server objects to Oracle.

Related TopicsMigrating Third-Party Databases

SQL Developer Preferences

Page 57: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer Preferences

SQL Developer Concepts and Usage 1-45

1.11.10 PL/SQL CompilerThe PL/SQL Compiler pane specifies options for compilation of PL/SQL subprograms.

Generate PL/SQL Debug Information: If this option is checked, PL/SQL debug information is included in the compiled code; if this option is not checked, this debug information is not included. The ability to stop on individual code lines and debugger access to variables are allowed only in code compiled with debug information generated.

Types of messages: You can control the display of informational, severe, and performance-related messages. (The ALL type overrides any individual specifications for the other types of messages.) For each type of message, you can specify any of the following:

■ No entry (blank): Use any value specified for ALL; and if none is specified, use the Oracle default.

■ Enable: Enable the display of all messages of this category.

■ Disable: Disable the display of all messages of this category.

■ Error: Enable the display of only error messages of this category.

Related TopicsUsing the SQL Worksheet

SQL Developer Preferences

1.11.11 PL/SQL DebuggerThe PL/SQL Debugger pane controls whether the Probe debugger (developed using the Oracle Probe API) is used to debug PL/SQL.

You should check this option only if you are using a firewall that prevents the database from connecting to the client, or if the database is on a Java virtual machine where a recent version of the Java Debug Wire Protocol (JDWP) is not implemented on the server. Otherwise, leave this option unchecked to use the default debugger.

Related TopicsUsing the SQL Worksheet

SQL Developer Preferences

1.11.12 SQL*PlusThe SQL*Plus pane controls behavior related to SQL*Plus.

SQL*Plus Executable: The Windows path or Linux xterm command for the SQL*Plus executable. If there is no $ORACLE_HOME on your system, there is no SQL*Plus executable, and you cannot use SQL*Plus with SQL Developer; however, you can still use many SQL*Plus commands in the SQL Worksheet (see Section 1.6, "Using the SQL Worksheet", and especially SQL*Plus Statements Supported and Not Supported in SQL Worksheet).

Related TopicsUsing the SQL Worksheet

SQL Developer Preferences

Page 58: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Location of User-Related Information

1-46 SQL Developer Online Help

1.11.13 SQL FormatterThe SQL Formatter pane controls how statements in the SQL Worksheet are formatted when you click Format SQL. The options include whether to insert space characters or tab characters when you press the Tab key (and how many characters), uppercase or lowercase for keywords and identifiers, whether to preserve or eliminate empty lines, and whether comparable items should be placed or the same line (if there is room) or on separate lines.

Related TopicsUsing the SQL Worksheet

SQL Developer Preferences

1.11.14 Web Browser and ProxyThe Web Browser and Proxy pane settings are relevant only when you use the Check for Updates feature (click Help, then Check for Updates), and only if your system is behind a firewall.

Browser Command Line: To specify a Web browser other than your default browser, specify the executable file to start that browser. To use your default browser, leave this field blank.

Use HTTP Proxy Server: Check your Web browser options or preferences for the appropriate values for these fields.

Related TopicsUsing the SQL Worksheet

SQL Developer Preferences

1.12 Location of User-Related InformationSQL Developer stores user-related information in several places, with the specific location depending on the operating system and certain environment specifications. User-related information includes user-defined reports, user-defined snippets, SQL Worksheet history, and SQL Developer user preferences.

In most cases, your user-related information is stored outside the SQL Developer installation directory hierarchy, so that it is preserved if you delete that directory and install a new version. The exception to this is on Windows systems, where SQL Developer user preferences are stored under the installation directory. To preserve preferences on Windows systems, use the Check for Updates feature (click Help, then Check for Updates) to upgrade your system.

The user-related information is stored in or under the following location:

■ On Windows systems: the HOME environment variable location, if defined; otherwise the SQLDEVELOPER_USER_DIR location, if defined; otherwise as indicated in the following table

■ On Linux and Mac OS X systems: the SQLDEVELOPER_USER_DIR location, if defined; otherwise as indicated in the following table

The following table shows the typical default locations (under a directory or in a file) for specific types of resources on different operating systems. (Note the period in the name of any directory or folder named .sqldeveloper.)

Page 59: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the Help

SQL Developer Concepts and Usage 1-47

To specify a nondefault SQLDEVELOPER_USER_DIR location, do either of the following:

■ Set the SQLDEVELOPER_USER_DIR environment variable to specify another directory path.

■ Edit the <sqldeveloper_install>\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf file and substitute the desired directory path for SQLDEVELOPER_USER_DIR in the following line:

SetUserHomeVariable SQLDEVELOPER_USER_DIR

If you want to prevent other users from accessing your user-specific SQL Developer information, you must ensure that the appropriate permissions are set on the directory where that information is stored or on a directory above it in the path hierarchy. For example, on a Windows system you may want to ensure that the sqldeveloper folder and the <user-name>\.sqldeveloper folder under Documents and Settings are not shareable; and on a Linux or Mac OS X system you may want to ensure that the ~/.sqldeveloper directory is not world-readable.

1.13 Using the HelpSQL Developer provides a Help menu and context-sensitive help (click the Help button or press the F1 key in certain contexts).

By default, help from the Help menu is displayed on the right side of the window, with the Help Center area on the far right and containing tabs at the bottom. You can use the Contents, Index, and Search (full-text) tabs or their corresponding Help menu items. Context-sensitive help is displayed in a separate help window. (To change the default help behavior, set SQL Developer Documentation preferences.)

For help displayed in the SQL Developer window, you can close individual Help panes by clicking the X next to their tab names (just as with tabs for tables and other database objects).

Table 1–1 Default Locations for User-Related Information

Resource Type Windows Systems Linux or Mac OS X Systems

User-defined reports

C:\Documents and Settings\<user-name>\.sqldeveloper\UserReports.xml

~/.sqldeveloper/UserReports.xml

User-defined snippets

C:\Documents and Settings\<user-name>\.sqldeveloper\UserSnippets.xml

~/.sqldeveloper/UserSnippets.xml

SQL history C:\Documents and Settings\<user-name>\.sqldeveloper\SqlHistory.xml

~/.sqldeveloper/system/

SQL Worksheet archive files1

1 SQL Worksheet archive files contain SQL statements that you have entered. These files begin with sqldev and then have a random number (for example, sqldev14356.sql). If you close SQL Developer with a SQL Worksheet open that contains statements, you will be prompted to save these files.

C:\Documents and Settings\<user-name>\.sqldeveloper\tmp\

~/.sqldeveloper/tmp/

SQL Developer user preferences

<sqldeveloper_install>\sqldeveloper\sqldeveloper\system\

~/.sqldeveloper/system/

Page 60: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Supplementary Oracle Database Information

1-48 SQL Developer Online Help

To print a help topic, display it in a Help pane and click the Print icon at the top of the pane.

The best way to become familiar with the help, and with SQL Developer itself, is simply to experiment with the Help menu options and the Help button in some dialog boxes.

Related TopicsSQL Developer User Interface

SQL Developer Concepts and Usage

1.14 Supplementary Oracle Database InformationIn addition to information about SQL Developer, this online help includes conceptual and usage information adapted from some Oracle Database manuals. This information appears in and under the following major topics, which are top-level books in the help Table of Contents:

■ Database Objects: Usage Information

■ Data Types: Usage Information

■ SQL: Usage Information

■ PL/SQL: Usage Information

■ Subprograms and Packages: Usage Information

■ Triggers: Usage Information

■ SQL*Plus: Usage Information

■ Working in a Global Environment

However, this supplementary information sometimes covers only basic information and features. For conceptual, usage, and reference information about the full set of Oracle Database features and options, see the Oracle Documentation Library for your installation of Oracle Database.

1.15 For More InformationFor more information about SQL Developer and related topics, you may find the following resources helpful:

■ SQL Developer home page (OTN), which includes links for downloads, a white papers, tutorials, blogs, a discussion forum, and other sources of information: http://www.oracle.com/technology/products/database/sql_developer/

■ PL/SQL page on OTN: http://www.oracle.com/technology/tech/pl_sql/

■ Oracle Accessibility site: http://www.oracle.com/accessibility/

■ Oracle Corporate site: http://www.oracle.com/

Tip: You can download the online help as a single PDF file from:

http://www.oracle.com/technology/products/database/sql_developer/pdf/online_help.pdf

Page 61: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating Third-Party Databases 2-1

2Migrating Third-Party Databases

Migration is the process of copying the schema objects and data from a source third-party (non-Oracle) database, such as MySQL, Microsoft SQL Server, or Microsoft Access, to an Oracle database. You can perform the migration in an efficient, largely automated way: the source schema objects are implemented as Oracle schema objects, and any related objects (such as sequences and triggers) that are required for the implementation are automatically created.

Thus, you have two options for working with third-party databases in SQL Developer:

■ Creating database connections so that you can view schema objects and data in these databases

■ Migrating these databases to Oracle, to take advantage of the full range of Oracle Database features and capabilities

See the Related Topics to learn about using SQL Developer to migrate third-party databases to Oracle.

Related TopicsSection 2.1, "Migration Quick Start"

Section 2.2, "Overview of Migration"

Section 2.3, "Preparing a Migration Plan"

Section 2.4, "Before You Start Migrating: General Information"

Section 2.5, "Before You Start Migrating: Source-Specific Information"

Section 2.6, "Capturing the Source Database"

Section 2.7, "Creating and Customizing the Converted Model"

Section 2.8, "Generating the DDL for the Oracle Schema Objects"

Section 2.10, "Testing the Oracle Database"

Section 2.11, "Deploying the Oracle Database"

Section 2.12, "Using Migration Reports"

Section 2.13, "SQL Developer User Interface for Migration"

Note: The migration capabilities in SQL Developer represent an evolution of the Oracle Migration Workbench product.

Page 62: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migration Quick Start

2-2 SQL Developer Online Help

2.1 Migration Quick StartTo migrate a third-party database to Oracle, the basic actions are: prepare for the migration, create or select a migration repository, capture the source database, convert the captured database, generate and run DDL for the new Oracle schema objects, and optionally move data from the source database to the new database. (Some steps after step 1 can be performed in a different order.)

1. Prepare for the migration by reading the appropriate related topics in Chapter 2, "Migrating Third-Party Databases".

2. Create a migration repository in a new or existing Oracle connection. You may find it simple and convenient to create separate a Oracle database user and connection for migration work. Then, select the connection and create the repository. For example:

a. Create an Oracle user named MIGRATIONS with default tablespace USER and temporary tablespace TEMP; and grant it at least RESOURCE, CREATE SESSION, and CREATE VIEW privileges.

b. Create a database connection named Migration_Repository that connects to the MIGRATIONS user.

c. Right-click the Migration_Repository connection, and select Associate Migration Repository to create the repository.

3. Create an Oracle user whose schema is to be used as the destination for the objects to be migrated, or use an existing Oracle user and schema. Grant sufficient privileges to this user.

For example, if you plan to migrate a Microsoft Access database named sales.mdb, you might create an Oracle user named SALES, in whose schema the Oracle database objects will be generated.

4. Create and open an Oracle connection for the schema that you created or selected in the preceding step.

For example, create an Oracle connection named Sales_Oracle to the schema associated with user SALES, and connect to it.

5. Create and open a database connection for the third-party database.

For example, create a database connection named Sales_Access to the Microsoft Access database named sales.mdb, and connect to it.

6. Perform the migration using the quick migration feature or the manual approach, or a combination, depending on your needs. Quick migration is fast and easy; manual operations provide greater flexibility. (If you do not want to use the quick migration feature, but instead want to perform the remaining actions manually, skip the rest of this step and go to Section 2.1.1, "Performing the Remaining Migration Actions Manually".)

To use the quick migration feature, click Migration, then Quick Migrate, and follow the steps in the dialog box.

a. For Source Connection, select the connection for the third-party database to be migrated. For example: Sales_Access

b. For Target Connection, select the connection for the Oracle Database schema to which the third-party database is to be migrated. For example: Sales_Oracle

Page 63: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migration Quick Start

Migrating Third-Party Databases 2-3

c. For Repository, use the selected existing repository; or if no repository exists, allow SQL Developer to create a migration repository in the schema of the target connection.

d. Click Verify to start the pre-migration check.

e. After the pre-migration check completes satisfactorily, click Migrate to perform the schema and data migration.

The specific operations performed depend on the type of third-party database being migrated. For example, for a Microsoft Access database, the Exporter for Microsoft Access tool is automatically invoked. Do not interrupt any of the migration operations.

Related TopicsPerforming the Remaining Migration Actions Manually

SQL Developer User Interface for Migration

Migrating Third-Party Databases

2.1.1 Performing the Remaining Migration Actions ManuallyIf you want to perform the remaining migration actions in Section 2.1, "Migration Quick Start" without using the quick migration feature, follow the steps in this section. In addition, if you encounter any errors in using the quick migration feature, you may want to complete the migration by performing some of these remaining steps manually.

1. Capture the source schema objects to be migrated by right-clicking the connection name in the Connections navigator and selecting Capture product-name (for example, Capture MySQL, Capture Microsoft Access, or Capture Microsoft SQL Server).

To capture the source database, you can have the capture performed automatically as part of the Quick Migrate option, or you can have it performed as a separate operation by right-clicking the connection name in the Connections navigator and selecting Capture product-name (for example, Capture MySQL, Capture Microsoft Access, or Capture Microsoft SQL Server).

■ Selecting Capture Microsoft Access automatically invokes the Microsoft Access exporter tool to create XML files for migrating the schema and the table data. However, if you want to run the exporter tool manually (for example, to control certain options), click Migration, then Microsoft Access Exporter, then the item for your version of Microsoft Access. Follow the steps for the exporter tool, which has its own online help

After the capture, the Captured Objects navigator displays an expandable node for the captured objects (for example, sales (Access) for the captured sales.mdb objects, as shown in the figure in Section 2.13, "SQL Developer User Interface for Migration").

2. Convert the captured objects to Oracle-format objects: right-click the appropriate node in the Captured Objects navigator and select Convert to Oracle Model, and accept the defaults for data mappings (or specify selected mappings if you need to).

After the conversion, the Converted Models navigator displays an expandable node for the converted objects (for example, Converted sales (Access)).

Page 64: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Migration

2-4 SQL Developer Online Help

3. Generate a SQL*Plus script that creates the DDL statements to create the Oracle database objects that correspond to the source database objects: right-click the appropriate node in the Captured Models navigator and select Generate. A SQL Worksheet window opens containing the SQL*Plus statements.

4. In the SQL Worksheet window that was just opened, select (in the drop-down list on the right) an Oracle database connection in which to run the script (next step).

Examine the generated SQL*Plus statements, and optionally make any changes. For example, if the database user to own the generated objects already exists (as it will if you are following these quick-step instructions), delete or modify the CREATE USER and related statements.

5. Click the Run Script button in the SQL Worksheet window to run the script.

6. Disconnect from the connection to the Oracle user for the generated objects (for example, Sales_Oracle), then reconnect to it. In the Connections navigator, you should now see the new database objects corresponding to the objects in the third-party database that you migrated.

7. If you want, you can migrate (move) any existing data from the source database to the Oracle database. You have two options for data migration: online (move the data now) or offline (move the data later).

■ Online data move: Click Migration, then Migrate Data. In the dialog box, specify the Source Connection, the Target Connection, and the Converted Model.

■ Offline data move: Click Migration, then Script Generation, then Generate Data Move Scripts; specify the converted model and a directory into which to generate the files that you will use for unloading the data from the source database and for importing into Oracle using SQL*Loader.

2.2 Overview of MigrationAn Oracle database provides you with better scalability, reliability, increased performance, and better security than third-party databases. For this reason, organizations migrate from their current database, such as Microsoft SQL Server and Microsoft Access, to an Oracle database. Although database migration can be complicated, SQL Developer enables you to simplify the process of migrating a third-party database to an Oracle database.

SQL Developer captures information from the source database and displays it in the captured model, which is a representation of the structure of the source database. This representation is stored in a migration repository, which is a collection of schema objects that SQL Developer uses to store migration information.

The information in the repository is used to generate the converted model, which is a representation of the structure of the destination database as it will be implemented in the Oracle database. You can then use the information in the captured model and the converted model to compare database objects, identify conflicts with Oracle reserved words, and manage the migration progress. When you are ready to migrate, you generate the Oracle schema objects, and then migrate the data.

SQL Developer contains logic to extract data from the data dictionary of the source database, create the captured model, and convert the captured model to the converted model.

Using SQL Developer to migrate a third-party database to an Oracle database provides the following benefits:

Page 65: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Migration

Migrating Third-Party Databases 2-5

■ Reduces the effort and risks involved in a migration project

■ Enables you to migrate an entire third-party database, including triggers and stored procedures

■ Enables you to see and compare the captured model and converted model and to customize each if you wish, so that you can control how much automation there is in the migration process

■ Provides feedback about the migration through reports

2.2.1 How Migration WorksThe components of SQL Developer work together to migrate a third-party database to an Oracle database. Figure 2–1, "SQL Developer Migration Architecture" shows how SQL Developer reads the information from the source database and creates the Oracle database schema objects. SQL Developer uses the information stored in the migration repository to migrate to the Oracle schema. You can make changes to the captured model or the converted model, or both, before migrating. The information in the converted model is used to complete the migration, that is, to generate the database objects in the destination Oracle schema.

Figure 2–1 SQL Developer Migration Architecture

Related TopicsMigrating Third-Party Databases

2.2.2 Migration Implemented as SQL Developer ExtensionsMigration support is implemented in SQL Developer as a set of extensions: one for Oracle Migration Workbench, and one "plugin" for each supported third-party database. If you want, you can disable migration support or support for individual plugins.

To view the installed extensions, and to enable or disable individual extensions, click Tools, then Preferences, then Extensions.

SourceDatabase

SQL DeveloperCaptured

Model

ConvertedModel

Migration Repository

DestinationOracle

Schema

Page 66: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Preparing a Migration Plan

2-6 SQL Developer Online Help

Related TopicsExtensions

Migrating Third-Party Databases

2.3 Preparing a Migration PlanThis topic describes the process of how to create a migration project plan. It identifies the sections to include in the migration plan, describes how to determine what to include for each section, and explains how to avoid the risks involved in a migration project. This information includes:

■ Task 1: Determining the Requirements of the Migration Project

■ Task 2: Estimating Workload

■ Task 3: Analyzing Operational Requirements

■ Task 4: Analyzing the Application

■ Task 5: Planning the Migration Project

Related TopicsMigrating Third-Party Databases

2.3.1 Task 1: Determining the Requirements of the Migration ProjectIn this task, you identify which databases you want to migrate and applications that access that database. You also evaluate the business requirements and define testing criteria.

To determine the requirements of the migration project:

1. Define the scope of the project.

There are several choices you must make about the third-party database and applications that access that database in order to define the scope of the migration project. To obtain a list of migration issues and dependencies, you should consider the following

■ What third-party databases are you migrating?

– What is the version of the third-party database?

– What is the character set of the third-party database?

■ What source applications are affected by migrating the third-party database to an Oracle database?

– What is the third-party application language?

– What version of the application language are you using?

In the scope of the project, you should have identified the applications you must migrate. Ensure that you have included all the necessary applications that are affected by migrating the database

■ What types of connectivity issues are involved in migrating to an Oracle database?

– Do you use connectivity software to connect the applications to the third-party database? Do you need to modify the connectivity software to connect the applications to the Oracle database?

Page 67: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Preparing a Migration Plan

Migrating Third-Party Databases 2-7

– What version of the connectivity software do you use? Can you use this same version to connect to the Oracle database?

■ Are you planning to rewrite the applications or modify the applications to work with an Oracle database?

2. Use Table 2–1 to determine whether you have a complex or simple source database environment. Identify the requirements based on the specific scenario.

If the migration project is a simple scenario, you may not have to complete all of the tasks listed in this guide. You make decisions based on your specific environment. For example, if you have a complex scenario, you may require extra testing based on the complexity of the application accessing the database.

3. Determine whether the destination database requires additional hardware and rewriting of backup schedules.

4. Define testing and acceptance criteria.

Define tests to measure the accuracy of the migration. You then use the acceptance criteria to determine whether the migration was successful. The tests that you develop from the requirements should also measure stability, evaluate performance, and test the applications. You must decide how much testing is necessary before you can deploy the Oracle database and applications into a production environment.

5. Create a requirements document with a list of requirements for the migration project.

The requirements document should have clearly defined tasks and number each specific requirement, breaking these into sub-requirements where necessary.

2.3.2 Task 2: Estimating WorkloadIn this task, you use SQL Developer to make calculated decisions on the amount of work that can be automated and how much is manual.

To estimate the workload:

1. Capture the captured model, create the converted model, and migrate to the destination database.

You can analyze the source database through the captured model and a preview of the destination database through the converted model. After you have captured

Table 2–1 Complex and Simple Scenarios

Complex Scenario Simple Scenario

More than one of the following:

■ Large database (greater than 25 GB)

■ Data warehouse

■ Large applications (greater than 100 forms, reports, and batch jobs)

■ Database is used by multiple lines of business

■ Distributed deployment

■ Large user base (greater than 100)

■ High availability requirement (such as a 24 X 7 X 365 environment)

Contains the following:

■ Small database (less than 25 GB)

■ Simple online transaction processing (OLTP)

■ Small application (less than 100 forms, reports, and batch jobs)

■ Database is used by one department

■ Centralized deployment

■ Small user base (less than 100)

■ Average availability (business hours)

Page 68: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Preparing a Migration Plan

2-8 SQL Developer Online Help

the source database, analyze the captured data contained in the captured model and the converted model. Ensure the content and structure of the migration repository is correct and determine how much time the entire process takes.

2. Use the Migration Log pane to evaluate the capture and migration process, categorize the total number of database objects, and identify the number of objects that can be converted and migrated automatically.

The migration log provides information about the actions that have occurred and record any warnings and errors. They identify the changes that have been made to the converted model so that you can evaluate if you should make changes to the applications that access the destination database.

3. Evaluate and categorize the issues that occurred. The migration log can help by providing information about:

■ Tables that did not load when you captured the source database

■ Stored procedures, views, and triggers that did not parse when you created the converted model

■ Syntax that requires manual intervention

■ Database objects that were not created successfully when you migrated the destination database

■ Data that did not migrate successfully when you migrated the destination database

4. For each error or warning in the migration log, evaluate the following:

■ Number of times an issue occurred

■ Time required to fix the issues, in person-hours

■ Number of resources required to fix the issue

After you have solved a complex problem, it should be easier and quicker to resolve the next time you have the same problem.

2.3.3 Task 3: Analyzing Operational RequirementsIn this task, you analyze the operational requirements, as follows:

1. Evaluate the operational considerations in migrating the source database to a destination database. Consider the following questions:

■ What backup and recovery changes do you require?

■ What downtime is required during the migration?

■ Have you met the performance requirements?

■ Are you changing the operational time window?

■ What effect does the downtime have on the business?

■ What training requirements or additional staff considerations are required?

Note: If the scope of the migration project is a complex scenario as defined in Table 2–1, Oracle recommends that you answer all of these questions. If you have a simple scenario, determine the answers to the most appropriate questions.

Page 69: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Preparing a Migration Plan

Migrating Third-Party Databases 2-9

■ Is it necessary to have the third-party and the Oracle database running simultaneously?

2. For each task, determine the resources and time required to complete.

3. Create an initial project plan.

Use the information that you have gathered during the requirements and planning stage to develop an initial project plan.

2.3.4 Task 4: Analyzing the ApplicationIn this task, you identify the users of the applications that run on the source database, what hardware it requires, what the application does, and how it interfaces with the source database. You also analyze the method the application uses to connect to the database and identify necessary modifications.

To analyze the application:

1. Determine whether changes to the application are required to make them run effectively on the destination database.

2. If changes are required to the application, determine whether it is more efficient to rewrite or modify the applications.

If you are rewriting the application to use the Oracle database, consider the following:

a. Create the necessary project documentation to rewrite the application. For example, you need a design specification and requirements documentation.

b. Rewrite the application according to the specification.

c. Test the application works against the Oracle database.

If you are modifying the application to use the Oracle database, consider the following:

a. Identify the number of connections to the database that are in the application and modify these connections to use the Oracle database.

You may need to change the connection information to use an ODBC or JDBC connection.

b. Identify the embedded SQL statements that you need to change in the application before you can test it against the Oracle database.

c. Test the application using the Oracle database.

3. Allocate time and resource to address each issue associated with rewriting or modifying the application.

4. Update the general requirements document for the project that you created in Task 1.

Note: If the migration project is a complex scenario as defined in Table 2–1, Oracle recommends that you answer all of these questions. If you have a simple scenario, determine the answers to the most appropriate questions.

Page 70: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Before You Start Migrating: General Information

2-10 SQL Developer Online Help

2.3.5 Task 5: Planning the Migration ProjectIn this task, you evaluate the unknown variables that the migration project may contain, such as the difference in the technologies of the source database and the destination database. During the planning stage, you:

■ Estimate the budget constraints of the project

■ Gather information to produce a migration plan

■ Estimate how much time the migration project should take

■ Calculate how many resources are required to complete and test the migration

To plan a migration project:

1. Define a list of tasks required to successfully complete the migration project requirements of Task 1.

2. Categorize the list of tasks required to complete the migration project.

You should group these tasks according to your business. This allows you to schedule and assign resources more accurately.

3. Update and finalize the migration project plan based on the information that you have obtained from Task 3 and Task 4.

4. Make sure the migration project plan meets the requirements of the migration project.

The migration plan should include a project description, resources allocated, training requirements, migration deliverable, general requirements, environment analysis, risk analysis, application evaluation, and project schedule.

2.4 Before You Start Migrating: General InformationYou may need to perform certain tasks before you start migrating a third-party database to an Oracle database. See the following for more information:

■ Creating a Database User for the Migration Repository

■ Requirements for Creating the Destination Oracle Objects

See also any information specific to the source database that you will be migrating, as explained in Section 2.5.

Related TopicsMigrating Third-Party Databases

2.4.1 Creating a Database User for the Migration RepositorySQL Developer requires a migration repository to migrate a third-party database to an Oracle database. To use an Oracle database for the migration repository, you must have access to that database using a database user account. Oracle recommends that you use a specific user account for migrations, For example, you may want to create a user named MIGRATIONS, create a database connection to that user, and use that

Note: Oracle recommends that you make a complete backup of the source database before starting the migration. For more information about backing up the source database, see the documentation for that type of database.

Page 71: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Before You Start Migrating: General Information

Migrating Third-Party Databases 2-11

connection for the migration repository; and if you wish, you can later delete the MIGRATIONS user to remove all traces of the migration from the database.

When you create a user for migrations, specify the tablespace information as in the following example, instead of using the defaults for tablespaces:

CREATE USER migrations IDENTIFIED BY migrations DEFAULT TABLESAPACE users TEMPORARY TABLESPACE temp,

Do not use a standard account (for example, SYSTEM) for migration.

When SQL Developer creates a migration repository, it creates many schema objects that are intended only for its own use. For example, it creates tables, views, indexes, packages, and triggers, many with names starting with MD_ and MIGR. You should not directly modify these objects or any data stored in them.

2.4.2 Requirements for Creating the Destination Oracle ObjectsThe user associated with the Oracle database connection used to perform the migration (that is, to run the script containing the generated DDL statements) must have the following roles and privileges:

RolesCONNECT WITH ADMIN OPTIONRESOURCE WITH ADMIN OPTION

PrivilegesALTER ANY ROLEALTER ANY SEQUENCEALTER ANY TABLEALTER TABLESPACEALTER ANY TRIGGERCOMMENT ANY TABLECREATE ANY SEQUENCECREATE ANY TABLECREATE ANY TRIGGERCREATE VIEW WITH ADMIN OPTIONCREATE PUBLIC SYNONYM WITH ADMIN OPTIONCREATE ROLECREATE USERDROP ANY SEQUENCEDROP ANY TABLEDROP ANY TRIGGERDROP USERDROP ANY ROLEGRANT ANY ROLEINSERT ANY TABLESELECT ANY TABLEUPDATE ANY TABLE

For example, you can create a user called migrations with the minimum required privileges required to migrate a database by using the following commands:

Note: You must grant these privileges directly to a user account. Granting the privileges to a role, which is subsequently granted to a user account, does not suffice. You cannot migrate a database as the user SYS.

Page 72: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Before You Start Migrating: Source-Specific Information

2-12 SQL Developer Online Help

CREATE USER migrations IDENTIFIED BY migrations DEFAULT TABLESAPACE users TEMPORARY TABLESPACE temp; GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE PUBLIC SYNONYM TO migrations WITH ADMIN OPTION; GRANT ALTER ANY ROLE, ALTER ANY SEQUENCE, ALTER ANY TABLE, ALTER TABLESPACE,ALTER ANY TRIGGER, COMMENT ANY TABLE, CREATE ANY SEQUENCE, CREATE ANY TABLE,CREATE ANY TRIGGER, CREATE ROLE, CREATE TABLESPACE, CREATE USER, DROP ANYSEQUENCE, DROP ANY TABLE, DROP ANY TRIGGER, DROP TABLESPACE, DROP USER, DROP ANYROLE, GRANT ANY ROLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE TO migrations;

After you have created the converted model is created and done first DDL generation done for the new database, it will be clear from the scripts which privileges will be required for your situation.

2.5 Before You Start Migrating: Source-Specific InformationDepending on the third-party database that you are migrating to an Oracle database, you may have to configure connection information and install drivers. For more information about specific third-party database requirements, see the following:

■ Before Migrating From Microsoft SQL Server

■ Before Migrating From Microsoft Access

■ Before Migrating From MySQL

Related TopicsMigrating Third-Party Databases

2.5.1 Before Migrating From Microsoft SQL ServerTo configure a Microsoft SQL Server database for migration:

1. Ensure that the source database is accessible by the Microsoft SQL Server user that is used by SQL Developer. This user must have DBA access to the Microsoft SQL Server database.

2. Ensure that you can connect to the Microsoft SQL Server database from the system where you have installed SQL Developer.

3. Ensure that you have downloaded the JTDS JDBC driver from http://jtds.sourceforge.net/.

4. In SQL Developer, do the following:

a. Click Tools, then Preferences, then Database, then Third Party JDBC Drivers.

b. Click Add Entry.

c. Select the jar file for the JTDS driver you downloaded from http://jtds.sourceforge.net/.

d. Click OK.

2.5.2 Before Migrating From Microsoft AccessTo configure a Microsoft Access database for migration:

1. Make backup copies of the database file or files.

Page 73: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Before You Start Migrating: Source-Specific Information

Migrating Third-Party Databases 2-13

2. Ensure that the necessary software (Microsoft Access, Microsoft ODBC driver, Microsoft Data Access Objects, perhaps other components) is installed on the same system as SQL Developer.

3. Ensure that the Admin user has at least Read Design and Read Data permission on system tables whose names start with Msys, as explained in the information about the Access tab in the Create/Edit/Select Database Connection dialog box.

4. If security is enabled, you should turn it off by copying the contents of the secured database into a new database, as follows:

SQL Developer does not support the migration of Microsoft Access databases that have security enabled. By default, SQL Developer uses the name of the Microsoft Access MDB file as the user name for the destination Oracle user. If you create an Oracle user in this way, the password is ORACLE.

a. From the File menu in Microsoft Access, select New Database.

b. Select the Blank Database icon, then click OK.

c. In the File New Database option, type a name for the database, then click Create.

d. From the File menu within the new database, select Get External Data, then select Import.

e. Select the secured Microsoft Access database that you want to import, then click Import.

f. From the Import Objects dialog, click Options.

g. Select the Relationships and Definition and Data options.

h. From the Tables tab, choose Select All.

i. Click OK.

All Microsoft Access objects are copied over to the new Microsoft Access database, except for the security settings.

5. If the application contains linked tables to other Microsoft Access databases, refresh these links by opening the application in Microsoft Access and performing the following:

From the Tools menu in Microsoft Access 97, select Add Ins, then select Linked Table Manager.

From the Tools menu in Microsoft Access 2000, select Database Utilities, then select Linked Table Manager.

6. Ensure that the Microsoft Access database is not a replica database, but a master database.

Note: SQL Developer supports linked tables to other Microsoft Access databases. SQL Developer automatically creates a user schema within the Oracle database for each Microsoft Access database migrated. However, Oracle recommends that you move all tables into a single Microsoft Access database to ensure that a single user schema is created in the destination database.

Page 74: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Before You Start Migrating: Source-Specific Information

2-14 SQL Developer Online Help

When you use the Exporter for Microsoft Access to export, an error message is displayed if the database is a replica. SQL Developer does not support the migration of a replica database.

7. From the Tools menu within Microsoft Access, select Database, then select Compact Database to compact the Microsoft Access database files.

8. Ensure that the Microsoft Access MDB file is accessible from the system where you have installed SQL Developer.

9. Use the Oracle Universal Installer to verify that you have the Oracle ODBC driver installed. If you need to install the driver, it is available on the Oracle Database Server or Database Client CD. You can also download the Oracle ODBC driver from the Oracle Technology Network (OTN) Web site:

http://www.oracle.com/technology/software/tech/windows/odbc/

You install the Oracle ODBC driver to allow Microsoft Access forms and reports to work with the migrated data. Install the Oracle ODBC driver into an Oracle home directory that contains the Oracle Net Services. You can obtain the Oracle Net Services from the Oracle Client or Oracle Database CD. You install Oracle Net Services to obtain the Net Configuration Assistant and Net Manager. These allow you to create a net configuration in the tnsnames.ora file.

10. Set the Oracle ODBC Data Source in the ODBC Data Source Administrator, as follows:

a. From the Start option, select Settings, then select Control Panel.

The Control Panel window appears.

b. If you are using Microsoft Windows 2000, select the Administrative Tools icon.

c. Select the Data Source (ODBC) icon.

The ODBC Data Source Administrator dialog appears

d. From the User DSN tab, click Add.

The Create New Data Source dialog box appears.

e. Select the Oracle ODBC Driver from the list of ODBC drivers installed on the system, then click Finish.

f. In the Data Source Name field, type a name to the ODBC data source.

This data source name is the ODBC Data Source that you must specify in the Modify Microsoft Access Database dialog box of SQL Developer.

Note: For more information about installing the networking products needed to connect to an Oracle database, see the installation guide for your Oracle Database release.

Note: If you want to use the data source name (DSN) for multiple users on the same system, you should create a System DSN instead of a User DSN.

Page 75: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Capturing the Source Database

Migrating Third-Party Databases 2-15

2.5.2.1 Creating Microsoft Access XML FilesTo prepare for capturing a Microsoft Access database, the Exporter for Microsoft Access tool must be run, either automatically or manually, as explained in Section 2.6, "Capturing the Source Database". This tool is packaged as a Microsoft Access MDE file and it allows you to export the Microsoft Access MDB file to an XML file. If the Microsoft Access database you select uses linked tables, the schema information for the linked tables is also exported to the XML file.

Each Microsoft Access database that you selected is exported to an XML file. The exporter tool currently does not support creating XML files from secured or replica databases.

2.5.3 Before Migrating From MySQLTo configure a MySQL database for migration, install MySQLConnector/J release 3.0 on the system where you have installed SQL Developer and set the appropriate SQL Developer preference, as follows:

1. Download the MySQLConnector/J API from the MySQL Web site at http://www.mysql.com/.

2. In SQL Developer, do the following:

a. Click Tools, then Preferences, then Database, then Third Party JDBC Drivers.

b. Click Add Entry.

c. Select the jar file for the MySQL driver you downloaded from http://www.mysql.com/.

d. Click OK.

2.6 Capturing the Source DatabaseBefore migrating a third-party database, you must extract information from the database. This information is a representation of the structure of the source database, and it is called the captured model. The process of extracting the information from the database is called capturing the source database.

To capture the source database, you can have the capture performed automatically as part of the Quick Migrate option, or you can have it performed as a separate operation by right-clicking the connection name in the Connections navigator and selecting Capture product-name (for example, Capture MySQL, Capture Microsoft Access, or Capture Microsoft SQL Server).

For a Microsoft Access database, selecting Capture product-name automatically invokes the Microsoft Access exporter tool to create XML files for migrating the schema and the table data. However, if you want to run the exporter tool manually (for example, to control certain options), click Migration, then Microsoft Access Exporter, then the item for your version of Microsoft Access. Follow the steps for the exporter tool, which has its own online help.

After capturing the source database, you can view the source database information in the captured model in SQL Developer. If necessary, you can modify the captured model and change data type mappings.

Note: Do not modify any of the files created by the Exporter tool.

Page 76: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating and Customizing the Converted Model

2-16 SQL Developer Online Help

Related TopicsMigrating Third-Party Databases

2.7 Creating and Customizing the Converted ModelBefore migrating a third-party database, you must create the converted model. The converted model is a representation of the structure of the destination database. SQL Developer creates the converted model using the information from the captured model.

By default, all procedures, functions, triggers, and views are copied to the converted model during translation and translated to Oracle PL/SQL. However, if translation fails for any of the objects, those objects appear in the converted model but their original SQL code remains unchanged. Objects that remain in their original SQL code will not be used when the generation scripts are created. Therefore, to have any such objects migrated, you must either fix the problem in the original SQL code before generating the script or edit the generated script to replace the original SQL code with valid PL/SQL code.

To convert a captured model to a converted model, right-click the appropriate node in the Captured Objects navigator and select Convert to Oracle, and specify or accept the defaults for data mappings.

To get the best results from the migrated database, you can customize the converted model to use specific features of Oracle databases, such as multiple tablespaces. However, if you are not an experienced Oracle database administrator, Oracle recommends that you proceed directly to migrating the database, as described in Section 2.8.

The following topic describes how to modify the converted model, if this becomes necessary:

■ Correcting Errors in the Converted Model

Related TopicsMigrating Third-Party Databases

2.7.1 Correcting Errors in the Converted ModelIf error messages with the prefix Parse Exception are listed in the progress screen, the associated schema objects do not appear in the converted model. To complete the converted model:

1. Note the captured model schema object that caused the error.

2. Select that schema object in the captured model.

3. Inspect the properties on the schema object in the captured model for possible causes of the error.

4. Modify a property of the schema object in the captured model.

For example, you might comment out one line of a stored procedure.

Note: Oracle recommends that you do not change the default data type mappings unless you are an experienced Oracle database administrator.

Page 77: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating the Data

Migrating Third-Party Databases 2-17

5. Right-click the model name and select Convert to Oracle Model.

SQL Developer attempts to create the converted model schema object from the captured model schema object.

A progress screen appears.

6. If the error appears again, repeat steps 2 to 5.

If necessary, comment out all the schema object’s editable properties. This ensures that a schema object is created in the converted model, and therefore in the destination database. The migrated schema object will not function as expected, but acts as a placeholder so that you can create an equivalent Oracle schema object with the correct functionality.

2.8 Generating the DDL for the Oracle Schema ObjectsTo generate the DDL statements to create the Oracle schema objects, you must already have captured the captured model and created the converted model. After you generate the DDL, you run the DDL statements to cause the objects to be created in the Oracle database. At this point, the database schema is migrated to Oracle.

After you generate and run the DDL statements to migrate the schema objects, you can migrate the data from the original source database, as explained in Section 2.9.

Related TopicsMigrating Third-Party Databases

2.9 Migrating the DataAfter you have generated and run DDL statements to create the Oracle schema objects for the migrated database, you can migrate (move) any existing data from the source database to the Oracle database. You have two options for data migration: online (move the data now) or offline (move the data later).

■ Online data move: Click Migration, then Migrate Data. In the dialog box, specify the Source Connection and Captured Model, and the Target Connection and Converted Model.

■ Offline data move: Click Migration, then Generate Offline Data Move Scripts; specify the converted model and a directory into which to generate the files that you will use for unloading the data from the source database and for importing into Oracle using SQL*Loader.

Related TopicsMigrating Third-Party Databases

Transferring the Data Offline

2.9.1 Transferring the Data OfflineTo transfer the data offline, you generate and use scripts to copy data from the source database to the destination database. During this process you must:

■ Use SQL Developer to generate the data unload scripts for the source database and corresponding data load scripts for the destination database.

■ Run the data unload scripts to create data files from the source database using the appropriate procedure for your source database:

Page 78: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating the Data

2-18 SQL Developer Online Help

– Creating Data Files From Microsoft SQL Server

– Creating Data Files From Microsoft Access

– Creating Data Files From MySQL

■ Run the data load scripts using SQL*Loader to populate the destination database with the data from these data files as described in Section 2.9.1.4.

2.9.1.1 Creating Data Files From Microsoft SQL ServerTo create data files from a Microsoft SQL Server database:

1. Copy the contents of the directory where SQL Developer generated the data unload scripts onto the computer where the source database is installed.

2. Edit the BCP extract script to include the name of the source database server.

■ On Windows, edit the bcp_extract.bat script to alter the isql lines to include the appropriate variables

The following shows some lines from a sample bcp_extract.bat script:

isql -Usa -P -S<SERVER NAME> -iCreate_View.sql bcp pubs.dbo].[authors out AUTHORS.dat -c -t "<ec>" -r "<er>" -Usa -P -S<SERVER NAME> isql -Usa -P -S<SERVER NAME> -iDrop_View.sql

3. Run the BCP extract script.

■ On Windows, enter:

prompt> bcp_extract.bat

This script creates the data files in the current directory.

4. Copy the data files to the oracle subdirectory of the directory where SQL Developer generated the data unload scripts.

2.9.1.2 Creating Data Files From Microsoft AccessTo create data files from a Microsoft Access database, use the Exporter for Microsoft Access tool.

2.9.1.3 Creating Data Files From MySQLTo create data files from a MySQL database:

1. Copy the contents of the directory where SQL Developer generated the data unload scripts onto the computer where the source database is installed.

2. Edit the Dump Extract script to include the correct host, user name, password, and destination directory for the data files.

■ On Windows, edit the dump_extract.bat script

■ On UNIX, edit the dump_extract.sh script

The following shows a line from a sample dump_extract.bat script:

mysqldump -h <HOST> -u <USERNAME> -p<PASSWORD> -T <DESTINATION_PATH> --fields-terminated-by="<ec>" --lines-terminated-by="<er>" CarrierDb

Note: For information about how to create data files from a Microsoft Access database, see online help for the exporter tool.

Page 79: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating the Data

Migrating Third-Party Databases 2-19

CarrierPlanTb

Edit this line to include the correct values for HOST, USERNAME, PASSWORD, and DESTINATION PATH. Do not include the angle brackets in the edited version of this file.

3. Run the Dump Extract script.

■ On Windows, enter:

prompt> dump_extract.bat

■ On UNIX, enter:

prompt> chmod 755 dump_extract.sh

This script creates the data files in the current directory.

4. Copy the data files to the oracle subdirectory of the directory where SQL Developer generated the data unload scripts.

2.9.1.4 Populating the Destination Database Using the Data FilesTo populate the destination database using the data files, you run the data load scripts using SQL*Loader:

1. Navigate to the directory where you created the data unload scripts.

2. Copy the contents of the oracle subdirectory to a directory on the computer where the destination database is installed.

3. Log on to the computer that runs the destination database.

4. Run the SQL Load script.

■ On Windows, enter:

prompt> sql_load_script.bat

■ On UNIX, enter:

prompt> ./sql_load_script.sh

If you are inserting into BLOB fields with SQL*Loader, you will receive the following error:

SQL*Loader-309: No SQL string allowed as part of LARGEOBJECT field specification

The workaround is to load the data (which is in hex format) into an additional CLOB field and then convert the CLOB to a BLOB through a PL/SQL procedure.

The only way to export binary data properly through the Microsoft SQL Server BCP is to export it in a hexadecimal (hex) format; however, to get the hex values into Oracle, save them in a CLOB (holds text) column, and then convert the hex values to binary values and insert them into the BLOB column. The problem here is that the HEXTORAW function in Oracle only converts a maximum of 2000 hex pairs. Consequently, write your own procedure that will convert (piece by piece) your hex data to binary. (In the following steps and examples, modify the START.SQL and FINISH.SQL to reflect your environment.

The following shows the code for two scripts, start.sql and finish.sql, that implement this workaround. Read the comments in the code, and modify any SQL statements as needed to reflect your environment and your needs.

Page 80: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating the Data

2-20 SQL Developer Online Help

-- START.SQL-- Modify this for your environment. -- This should be executed in the user schema in Oracle that contains the table.-- DESCRIPTION:-- ALTERS THE OFFENDING TABLE SO THAT THE DATA MOVE CAN BE EXECUTED-- DISABLES TRIGGERS, INDEXES AND SEQUENCES ON THE OFFENDING TABLE -- 1) Add an extra column to hold the hex string;alter table <tablename> add (<blob_column>_CLOB CLOB); -- 2) Allow the BLOB column to accept NULLSalter table <tablename> MODIFY <blob_column> NULL; -- 3) Disable triggers and sequences on <tablename>alter trigger <triggername> disable; alter table <tablename> drop primary key cascade; drop index <indexname>; -- 4) Allow the table to use the tablespacealter table <tablename> move lob (<blob_column>) store as (tablespace lob_tablespace); alter table <tablename> move lob (<blob_column>_clob) store as (tablespace lob_tablespace); COMMIT; -- END OF FILE -- FINISH.SQL-- Modify this for your enironment. -- This should be executed in the table schema in Oracle.-- DESCRIPTION:-- MOVES THE DATA FROM CLOB TO BLOB-- MODIFIES THE TABLE BACK TO ITS ORIGINAL SPEC (without a clob)-- THEN ENABLES THE SEQUENCES, TRIGGERS AND INDEXES AGAIN -- Currently we have the hex values saved as -- text in the <blob_column>_CLOB column-- And we have NULL in all rows for the <blob_column> column.-- We have to get BLOB locators for each row in the BLOB column -- put empty blobs in the blob columnUPDATE <tablename> SET <blob_column>=EMPTY_BLOB();

Note: After you run start.sql and before you run finish.sql, run BCP; and before you run BCP, change the relevant line in the .ctl file from:

<blob_column> CHAR(2000000) "HEXTORAW (:<blob_column>)"

to:

<blob_column>_CLOB CHAR(2000000)

Page 81: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Migrating the Data

Migrating Third-Party Databases 2-21

COMMIT; -- create the following procedure in your table schemaCREATE OR REPLACE PROCEDURE CLOBTOBLOBASinputLength NUMBER; -- size of input CLOBoffSet NUMBER := 1;pieceMaxSize NUMBER := 2000; -- the max size of each peicepiece VARCHAR2(2000); -- these pieces will make up the entire CLOBcurrentPlace NUMBER := 1; -- this is where were up to in the CLOBblobLoc BLOB; -- blob locator in the tableclobLoc CLOB; -- clob locator pointsthis is the value from the dat file -- THIS HAS TO BE CHANGED FOR SPECIFIC CUSTOMER TABLE -- AND COLUMN NAMESCURSOR cur IS SELECT <blob_column>_clob clob_column , <blob_column> blob_column FROM /*table*/<tablename> FOR UPDATE; cur_rec cur%ROWTYPE; BEGIN OPEN cur;FETCH cur INTO cur_rec; WHILE cur%FOUNDLOOP--RETRIVE THE clobLoc and blobLocclobLoc := cur_rec.clob_column;blobLoc := cur_rec.blob_column; currentPlace := 1; -- reset evertime-- find the lenght of the clobinputLength := DBMS_LOB.getLength(clobLoc); -- loop through each peiceLOOP-- get the next piece and add it to the clobpiece := DBMS_LOB.subStr(clobLoc,pieceMaxSize,currentPlace); -- append this piece to the BLOBDBMS_LOB.WRITEAPPEND(blobLoc, LENGTH(piece)/2, HEXTORAW(piece)); currentPlace := currentPlace + pieceMaxSize ; EXIT WHEN inputLength < currentplace;END LOOP; FETCH cur INTO cur_rec;END LOOP; END CLOBtoBLOB;/ -- now run the procedure-- It will update the blob column with the correct binary representation-- of the clob columnEXEC CLOBtoBLOB;

Page 82: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Testing the Oracle Database

2-22 SQL Developer Online Help

-- drop the extra clob cloumnalter table <tablename> drop column <blob_column>_clob; -- 2) apply the constraint we removed during the data loadalter table <tablename> MODIFY FILEBINARY NOT NULL; -- Now re enable the triggers, indexes and primary keysalter trigger <triggername> enable; ALTER TABLE <tablename> ADD ( CONSTRAINT <pkname> PRIMARY KEY ( <column>) ) ; CREATE INDEX <index_name> ON <tablename>( <column> ); COMMIT; -- END OF FILE

2.10 Testing the Oracle DatabaseDuring the testing phase, you test the application and Oracle database to make sure that the:

■ Migrated data is complete and accurate

■ Applications function in the same way as the source database

■ Oracle database producing the same results as the source database

■ Applications and Oracle database meet the operational and performance requirements

You may already have a collection of unit tests and system tests from the original application that you can use to test the Oracle database. You should run these tests in the same way that you ran tests against the source database. However, regardless of added features, you should ensure that the application connects to the Oracle database and that the SQL statements it issues produces the correct results.

See also the following related topics:

■ Testing Methodology

■ Testing the Oracle Database

Related TopicsMigrating Third-Party Databases

2.10.1 Testing MethodologyMany constraints shape the style and amount of testing that you perform on a database. Testing can contain one or all of the following:

■ Simple data validation

Note: The tests that you run against the application vary depending on the scope of the application. Oracle recommends that you thoroughly test each SQL statement that is changed in the application. You should also test the system to make sure that the application functions the same way as in the third-party database.

Page 83: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Testing the Oracle Database

Migrating Third-Party Databases 2-23

■ Full life cycle of testing addressing individual unit tests

■ System and acceptance testing

You should follow a strategy for testing that suits your organization and circumstances. Your strategy should define the process by which you test the migrated application and Oracle database. A typical test method is the V-model, which is a staged approach where each feature of the database creation is mirrored with a testing phase.

Figure 2–2, "V-model with a Database Migration" shows an example of the V-model with a database migration scenario:

Figure 2–2 V-model with a Database Migration

There are several types of tests that you use during the migration process. During the testing stage, you go through several cycles of testing to enhance the quality of the database. The test cases you use should make sure that any issues encountered in a previous version of the Oracle database are not introduced again.

For example, if you have to make changes to the migrated schema based on test results, you may need to create a new version of the Oracle database schema. In practice, you use SQL Developer to create a base-line Oracle schema at the start of testing, and then edit this schema as you progress with testing.

2.10.2 Testing the Oracle DatabaseUse the test cases to verify that the Oracle database provides the same business logic results as the source database.

This procedure explains one way of testing the migrated database. Other methods are available and may be more appropriate to your business requirements.

To test the Oracle database:

1. Create a controlled version of the migrated database.

Note: Oracle recommends that you track issues that you find during a testing cycle in an issue tracking system. Track these issues against the version of the database or application that you are testing.

Note: Oracle recommends that you define completion criteria so that you can determine the success of the migration.

Database MigrationRequirements

IntegrationTesting

Database/ApplicationDesign

Database ObjectTesting

System AcceptanceTesting

Development Phase Testing Phase

Page 84: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Testing the Oracle Database

2-24 SQL Developer Online Help

Oracle recommends that you keep the database migration scripts in a source control system.

2. Design a set of test cases that you can use to test the Oracle database from unit to system level. The test cases should:

a. Ensure the following:

– All the users in the source database have migrated successfully

– Privileges and grants for users are correct

– Tables have the correct structure, defaults are functioning correctly, and errors did not occur during mapping or generation

b. Validate that the data migrated successfully by doing the following:

– Comparing the number of rows in the Oracle database with those in the source database

– Calculating the sum of numerical columns in the Oracle database and compare with those in the source database

c. Ensure that the following applies to constraints:

– You cannot enter duplicate primary keys

– Foreign keys prevent you from entering inconsistent data

– Check constraints prevent you from entering invalid data

d. Check that indexes and sequences are created successfully.

e. Ensure that views migrated successfully by doing the following:

– Comparing the number of rows in the Oracle database with those in the source database

– Calculating the sum of numerical columns in the Oracle database and compare with those in the source database

f. Ensure that triggers, procedures, and functions are migrated successfully. Check that the correct values are returned for triggers and functions.

3. Run the test cases against the migrated database.

4. Create a report that evaluates the test case results.

These reports allow you to evaluate the data to qualify the errors, file problem reports, and provide a customer with a controlled version of the database.

5. If the tests pass, go to step 7.

If all tests in the test cases pass or contain acceptable errors, the test passes. If acceptable errors occur, document them in an error report that you can use for audit purposes.

6. If the test cases fail:

a. Identify the cause of the error.

b. Identify the test cases needed to check the errors.

c. Log an issue on the controlled version of the migrated database code in the problem report.

d. Add the test case and a description of the problem to the incident tracking system of your organization, which could be a spreadsheet or bug reporting system. Aside from the test case, the incident log should include the following:

Page 85: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Testing the Oracle Database

Migrating Third-Party Databases 2-25

– Provide a clear, concise description of the incident encountered

– Provide a complete description of the environment, such as platform and source control version

– Attach the output of the test, if useful

– Indicate the frequency and predictability of the incident

– Provide a sequence of events leading to the incident

– Describe the effect on the current test, diagnostic steps taken, and results noted

– Describe the persistent after effect, if any

e. Attempt to fix the errors.

f. Return to step 1.

7. Identify acceptance tests that you can use to make sure the Oracle database is an acceptable quality level.

2.10.2.1 Guidelines for Creating TestsYou may already have a collection of unit tests and system tests from the original application that you can use to test the Oracle database. However, if you do not have any unit or system tests, you need to create them. When creating test cases, use the following guidelines:

■ Plan, specify, and execute the test cases, recording the results of the tests.

The amount of testing you perform is proportional to the time and resources that are available for the migration project. Typically, the testing phase in a migration project can take anywhere from 40% to 60% of the effort for the entire project.

■ Identify the components that you are testing, the approach to the test design and the test completion criteria.

■ Define each test case so that it is reproducible.

A test that is not reproducible is not acceptable for issue tracking or for an audit process.

■ Divide the source database into functions and procedures and create a test case for each function or procedure. In the test case, state what you are going to test, define the testing criteria, and describe the expected results.

■ Record the expected result of each test case.

■ Verify that the actual results meet the expected results for each test.

■ Define test cases that produce negative results as well as those that you expect a positive result.

2.10.2.2 Example of a Unit Test CaseThe following displays a sample unit test plan for Windows:

Name Jane Harrison

Module Table Test Emp

Date test completed 23 May 2007

Coverage log file location mwb\database\TableTestEmp

Page 86: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Deploying the Oracle Database

2-26 SQL Developer Online Help

Description This unit test tests that the emp table was migrated successfully.

Reviewed by John Smith

2.11 Deploying the Oracle DatabaseDeploying the migrated and tested Oracle database within a business environment can be difficult. Therefore, you may need to consider different rollout strategies depending on your environment. Several rollout strategies are identified for you, but you may use another approach if that is recommended by your organization.

During the deployment phase, you move the destination database from a development to a production environment. A group separate from the migration and testing team, may perform the deployment phase, such as the in-house IT department.

Deployment involves the following:

■ Choosing a Rollout Strategy

■ Deploying the Destination Database

Related TopicsMigrating Third-Party Databases

2.11.1 Choosing a Rollout StrategyThe strategy that you use for migrating a third-party database to an Oracle database must take into consideration the users and the type of business that may be affected during the transition period. For example, you may use the Big Bang approach because you do not have enough systems to run the source database and Oracle database simultaneously. Otherwise, you may want to use the Phased approach to make sure that the system is operating in the user environment correctly before it is released to the general user population. You can use one of the following approaches.

Task ID Task Description Expected Result Verified (Yes/No)

1 Run the following on the source database for each table:

select count(*) from emp

Run the following on the destination database for each table:

select count(*) from emp

On the source database, the count(*) produces a number. In this case, the number is the number of rows in each table.

On the destination database, the count(*) number corresponds to the number of rows in the new Oracle table.

Yes

The number of rows in each table is the same in the source and destination databases.

2 Run the following on the source database for each table:

select sum(salary) from emp

Run the following on the destination database for each table:

select sum(salary) from emp

On the source database, sum(salary) produces a check sum for the sum of the data in each table.

On the destination database, sum(salary) corresponds to the sum of the salary in the emp table.

Yes

The sum for each table is the same in the source and destination databases.

Page 87: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Deploying the Oracle Database

Migrating Third-Party Databases 2-27

2.11.1.1 Phased ApproachUsing the Phased approach, you migrate groups of users at different times. You may decide to migrate a department or a subset of the complete user-base. The users that you select should represent a cross-section of the complete user-base. This approach allows you to profile users as you introduce them to the Oracle database. You can reconfigure the system so that only selected users are affected by the migration and unscheduled outages only affect a small percentage of the user population. This approach may affect the work of the users you migrated. However, because the number of users is limited, support services are not overloaded with issues.

The Phased approach allows you to debug scalability issues as the number of migrated users increases. However, using this approach may mean that you must migrate data to and from legacy systems during the migration process. The application architecture must support a phased approach.

2.11.1.2 Big Bang ApproachUsing the Big Bang approach, you migrate all of the users at the same time. This approach may cause schedule outages during the time you are removing the old system, migrating the data, deploying the Oracle system, and testing that the system is operating correctly. This approach relies on you testing the database on the same scale as the original database. It has the advantage of minimal data conversion and synchronization with the original database because that database is switched off. The disadvantage is that this approach can be labor intensive and disruptive to business activities due to the switch over period needed to install the Oracle database and perform the other migration project tasks.

2.11.1.3 Parallel ApproachUsing the Parallel approach, you maintain both the source database and destination Oracle database simultaneously. To ensure that the application behaves the same way in the production environment for the source database and destination database, you enter data in both databases and analyze the data results. The advantage of this approach is if problems occur in the destination database, users can continue using the source database. The disadvantage of the Parallel approach is that running and maintaining both the source and the destination database may require more resources and hardware than other approaches.

2.11.2 Deploying the Destination DatabaseThere are several ways to deploy the destination database. The following task is an example that you should use as a guideline for deploying the destination database.

1. Configure the hardware, if necessary.

In a large scale or complex environment, you must design the disk layout to correspond with the database design. If you use redundant disks, align them in stripes that you can increase as the destination database evolves. You must install and configure the necessary disks, check the memory, and configure the system.

2. Make sure the operating system meets the parameters of the Oracle configuration.

Note: If you have a complex scenario as defined in Table 2–1, Oracle recommends that you complete all of the deployment tasks. However, if you have a simple scenario, you should choose the deployment tasks appropriate to your organization.

Page 88: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Migration Reports

2-28 SQL Developer Online Help

Before installing any Oracle software, make sure that you have modified all system parameters. For more information about modifying system parameters, see the relevant installation guide for your platform, such as Solaris Operating System.

3. Install the Oracle software.

Aside from the Oracle software that allows you to create an Oracle database, you may need to install ancillary software to support the application, such as Extract Transformation and Load (ETL) Software for data warehousing.

4. Create the destination database from the source database and migrate the data to the Oracle database.

There are several ways of putting the destination database into production after testing it, such as:

■ Place the successfully tested database into production. The test system is now the production system.

■ Use Oracle Export to extract the destination database from the successfully tested database and use Oracle Import to create that database within the production environment.

■ Use the tested migration scripts to create the Oracle database and populate it with data using SQL*Loader.

5. Perform the final checks on the destination database and applications.

6. Place the destination database into production using one of the rollout strategies.

7. Perform a final audit by doing the following:

■ Audit the integrity of the data

■ Audit the validity of the processes, such as back-up and recovery

■ Obtain sign-off for the project, if necessary

2.12 Using Migration ReportsSeveral SQL Developer reports provide information about objects that have been captured, converted, and generated during operations designed to migrate third-party databases to Oracle. Each report uses information from a selected migration repository

Capture Summary: Lists each captured model and its date of capture.

Automatic Name Changes:

Converted Summary: Lists each converted model and its conversion date.

Migration Dependency:

Related TopicsReports

Migrating Third-Party Databases

2.13 SQL Developer User Interface for MigrationIf you are performing database migration, you need to use some migration-specific features in addition to those described in Section 1.1, "SQL Developer User Interface". The user interface includes some additional navigator tabs and panes (Captured

Page 89: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

Migrating Third-Party Databases 2-29

Objects and Converted Objects) and a Migration menu, and many smaller changes throughout the interface. Figure 2–3, "Main Window for a Database Migration" shows the SQL Developer main window with objects reflecting the migration of a Microsoft Access application named sales.mdb.

Page 90: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

2-30 SQL Developer Online Help

Figure 2–3 Main Window for a Database Migration

In this figure:

Page 91: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

Migrating Third-Party Databases 2-31

■ The Connections navigator shows three database connections: migration_repository for a connection (to a user named MIGRATION) used for the migration repository, sales_access connected to a Microsoft Access database named sales.mdb, and sales_oracle connected to an Oracle user named SALES whose schema owns the migrated schema objects.

■ The Captured Objects navigator shows one captured model, which was created using an XML file created by the exporter tool for Access applications. (If the source database is a type other than Microsoft Access, the procedure for creating the captured model is different: you can generate it directly from the source database connection.)

■ The Converted Objects navigator shows one converted model, which is an Oracle representation of the source database. The converted model is created from the captured model, and the converted model is used to generate the schema objects that you can see using an Oracle database connection (sales_oracle in this figure).

Related TopicsMigrating Third-Party Databases

2.13.1 Migration MenuThe Migration menu contains options related to migrating third-party databases to Oracle.

Quick Migrate: Displays a dialog box for performing a quick migration using many default values.

Repository Management: Enables you to create, delete, or truncate (remove all data from) a migration repository; select the current migration repository; and disconnect from the current migration repository (which deactivates the current repository but does not disconnect from the database).

Microsoft Access Exporter: Contains submenu items from which you specify the version of the exporter tool to use to create an XML file to be used for creating the captured model. You can also use the exporter tool to export table data. Specify the exporter tool version for the version of Access that is on your PC and that was used to create the .mdb file.

Migrate Data: Displays a dialog box for performing no online migration of table data from the source database to the Oracle schema.

Script Generation: Generate Oracle DDL displays DDL (data definition language) statements in a SQL Worksheet window, where you can then run the script to create the Oracle schema and schema objects; Generate Data Move Scripts displays a dialog box for specifying the location in which to create files for performing an offline migration of table data from the source database to the Oracle schema.

Capture Microsoft Access Exporter XML: Creates a captured model of a Microsoft Access database from the XML file created by the exporter tool.

MySQL and SQL Server Offline Capture: Create Database Capture Scripts specifies options for creating an offline capture properties (.ocp) file, which you can later load and run; Load Database Capture Script Output enables you to select a script to be loaded and run.

Script Generation: Generate Oracle DDL specifies the converted model for which to generate Oracle DDL and produces a SQL*Plus script file that you use for offline generation (that is, you can run the script to create the appropriate objects in the

Page 92: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

2-32 SQL Developer Online Help

Oracle database); Generate Data Move Scripts specifies the converted model and the destination directory if you are performing offline data migration.

Translation Scratch Editor: Displays the translation scratch editor, which is explained in Section 2.13.5.

2.13.2 Other Menus: Migration ItemsThe View menu has the following items related to database migration:

■ Captured Objects: Displays the Captured Objects navigator.

■ Converted Objects: Displays the Converted Objects navigator.

2.13.3 Migration PreferencesThe SQL Developer user preferences window (displayed by clicking Tools, then Preferences) contains a Migration pane with several related subpanes, and a Translation pane with a Translation Preferences subpane.

For information about these preferences, click Help in the pane, or see Section 1.11.9, "Migration".

2.13.4 Migration Log PanesMigration Log: Contains errors, warnings, and informational messages relating to migration operations.

Logging Page: Contains an entry for each migrated-related operation.

Data Editor Log: Contains entries when data is being manipulated by SQL Developer. For example, the output of a Microsoft Excel import operation will be reported here as a series of INSERT statements.

2.13.5 Using the Translation Scratch EditorYou can use the translation scratch editor to enter third-party database SQL statements and have them translated to Oracle PL/SQL statements. You can specify translation from T-SQL to PL/SQL or from Microsoft Access SQL to PL/SQL.

You can display the scratch editor by clicking Migration, then Translation Scratch Editor. The scratch editor consists of two SQL Worksheet windows side by side, as shown in the following figure:

Page 93: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

Migrating Third-Party Databases 2-33

To translate a statement to its Oracle equivalent, select the type of translation (Access SQL to PL/SQL or T-SQL to PL/SQL), enter the third-party SQL statement or statements, then click the Translate (>>) icon to display the generated PL/SQL statement or statements. (For MySQL, translation is not supported at the statement level, but only for the CREATE PROCEDURE and CREATE VIEW syntax.)

For multiple statements, each non-PL/SQL statement must be terminated with either a semicolon or (on a new line) a slash (/), and each PL/SQL statement must be terminated with a slash (/) on a new line. SQL keywords are automatically highlighted.

The first time you save the contents of either worksheet window in the translation scratch editor, you are prompted for the file location and name. If you perform any subsequent Save operations (regardless of whether you have erased or changed the content of the window), the contents are saved to the same file. To save the contents to a different file, click File, then Save As.

For detailed information about the worksheet windows, see Section 1.6, "Using the SQL Worksheet".

Related TopicsMigrating Third-Party Databases

Page 94: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL Developer User Interface for Migration

2-34 SQL Developer Online Help

Page 95: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Tutorial: Creating Objects for a Small Database 3-1

3Tutorial: Creating Objects for a Small

Database

In this tutorial, you will use SQL Developer to create objects for a simplified library database, which will include tables for books, patrons (people who have library cards), and transactions (checking a book out, returning a book, and so on).

The tables are deliberately oversimplified for this tutorial. They would not be adequate for any actual public or organizational library. For example, this library contains only books (not magazines, journals, or other document formats), and it can contain no more than one copy of any book.

You will perform the following major steps:

Creating a Table (BOOKS)

Creating a Table (PATRONS)

Creating a Table (TRANSACTIONS)

Creating a Sequence

Creating a View

Creating a PL/SQL Procedure

Debugging a PL/SQL Procedure (optional)

Using the SQL Worksheet for Queries (optional)

Related TopicsSection 3.9, "Script for Creating and Using the Library Tutorial Objects"

Chapter 1, "SQL Developer Concepts and Usage"

Section 1.1, "SQL Developer User Interface"

Section 1.2, "Database Objects"

Tip: To print this tutorial, right-click its book icon in the Help Contents display and select Print Topic Subtree.

Note: To delete the objects that you create for this tutorial, you can use the DROP statements at the beginning of the script in Section 3.9, "Script for Creating and Using the Library Tutorial Objects".

Page 96: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a Table (BOOKS)

3-2 SQL Developer Online Help

3.1 Creating a Table (BOOKS)The BOOKS table contains a row for each book in the library. It includes columns of character and number types, a primary key, a unique constraint, and a check constraint. You will use the Create Table dialog box to create the table declaratively; the table that you create will be essentially the same as if you had entered the following statement using the SQL Worksheet:

CREATE TABLE books ( book_id VARCHAR2(20), title VARCHAR2(50) CONSTRAINT title_not_null NOT NULL, author_last_name VARCHAR2(30) CONSTRAINT last_name_not_null NOT NULL, author_first_name VARCHAR2(30), rating NUMBER, CONSTRAINT books_pk PRIMARY KEY (book_id), CONSTRAINT rating_1_to_10 CHECK (rating IS NULL OR (rating >= 1 and rating <= 10)), CONSTRAINT author_title_unique UNIQUE (author_last_name, title));

To create the BOOKS table, connect to the database as the user in the schema you want to use for this tutorial. Right-click the Tables node in the schema hierarchy on the left side, select New Table, and enter the following information. (If a tab or field is not mentioned, do not enter anything for it. Be sure that the Advanced box is not checked when you start creating the table.)

For detailed information about the table dialog box and its tabs, see Section 4.25, "Create Table (quick creation)" and Section 4.26, "Create/Edit Table (with advanced options)".

Schema: Specify your current schema as the schema in which to create the table.

Name: BOOKS

Create the table columns using the following information. After creating each column except the last one (rating), click Add Column to add the next column. (If you accidentally click OK instead of Add Column, right-click the BOOKS table in the Connections navigator display, select Edit, and continue to add columns.)

After you have entered the last column (rating), check Advanced (next to Schema). This displays a pane for more table options. For this table, you will use the Unique Constraints and Check Constraints panes.

Column Name Type Size Other Information and Notes

book_id VARCHAR2 20 Primary Key (Automatically checks Not Null; an index is also created on the primary key column. This is the Dewey code or other book identifier.)

title VARCHAR2 50 Not Null

author_last_name VARCHAR2 30 Not Null

author_first_name VARCHAR2 30

rating NUMBER (Librarian’s personal rating of the book, from 1 (poor) to 10 (great))

Page 97: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a Table (PATRONS)

Tutorial: Creating Objects for a Small Database 3-3

Unique Constraints paneClick Add to add a unique constraint for the table, namely, that the combination of author_last_name and title must be unique within the table. (This is deliberately oversimplified, since most major libraries will have allow more than one copy of a book in their holdings. Also, the combination of last name and title is not always "foolproof" check for uniqueness, but it is sufficient for this simple scenario.)

Name: author_title_unique

In Available Columns, double-click TITLE and then AUTHOR_LAST_NAME to move them to Selected Columns.

Check Constraints paneClick Add to add a check constraint for the table, namely, that the rating column value is optional (it can be null), but if a value is specified, it must be a number from 1 through 10. You must enter the condition using SQL syntax that is valid in a CHECK clause (but do not include the CHECK keyword or enclosing parentheses for the entire CHECK clause text).

Name: rating_1_to_10

Condition: rating is null or (rating >= 1 and rating <= 10)

Click OK to finish creating the table.

Go to Section 3.2, "Creating a Table (PATRONS)" to create the next table.

Related TopicsTutorial: Creating Objects for a Small Database

SQL Developer User Interface

3.2 Creating a Table (PATRONS)The PATRONS table contains a row for each patron who can check books out of the library (that is, each person who has a library card). It includes an object type (MDSYS.SDO_GEOMETRY) column. You will use the Create Table dialog box to create the table declaratively; the table that you create will be essentially the same as if you had entered the following statement using the SQL Worksheet:

CREATE TABLE patrons ( patron_id NUMBER, last_name VARCHAR2(30) CONSTRAINT patron_last_not_null NOT NULL, first_name VARCHAR2(30), street_address VARCHAR2(50), city_state_zip VARCHAR2(50), location MDSYS.SDO_GEOMETRY, CONSTRAINT patrons_pk PRIMARY KEY (patron_id));

The use of single city_state_zip column for all that information is not good database design; it is done here merely to simplify your work in the tutorial.

The location column (Oracle Spatial geometry representing the patron’s geocoded address) is merely to show the use of a complex (object) type.

To create the PATRONS table, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Tables node in the schema hierarchy on the left side, select New Table, and enter the following

Page 98: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a Table (TRANSACTIONS)

3-4 SQL Developer Online Help

information. (If a tab or field is not mentioned, do not enter anything for it. Be sure that the Advanced box is not checked when you start creating the table.)

Schema: Specify your current schema as the schema in which to create the table.

Name: PATRONS

Create most of the table columns using the following information. After creating each column except the city_state_zip column, click Add Column to add the next column. (If you accidentally click OK instead of Add Column, right-click the PATRONS table in the Connections navigator display, select Edit, and continue to add columns.)

The last column in the table (location) requires a complex data type, for which you must use the Columns tab with advanced options. Check Advanced (next to Schema). This displays a pane for selecting more table options.

In the Columns pane, click the city_state_zip column name, and click the Add Column (+) icon to add the following as the last column in the table.

After you have entered the last column (location), click OK to finish creating the table.

Go to Section 3.3, "Creating a Table (TRANSACTIONS)" to create the next table.

Related TopicsTutorial: Creating Objects for a Small Database

SQL Developer User Interface

3.3 Creating a Table (TRANSACTIONS)The TRANSACTIONS table contains a row for each transaction involving a patron and a book (for example, someone checking a book out or returning a book). It includes two foreign key columns. You will use the Create Table dialog box to create the table declaratively; the table that you create will be essentially the same as if you had entered the following statement using the SQL Worksheet:

CREATE TABLE transactions ( transaction_id NUMBER, patron_id CONSTRAINT for_key_patron_id REFERENCES patrons(patron_id),

Column Name Type Size Other Information and Notes

patron_id NUMBER Primary Key. (Unique patron ID number, with values to be created using a sequence that you will create)

last_name VARCHAR2 30 Not Null

first_name VARCHAR2 30

street_address VARCHAR2 30

city_state_zip VARCHAR2 30

Column Name Type Other Information and Notes

location Complex type

Schema: MDSYS

Type: SDO_GEOMETRY

(Oracle Spatial geometry object representing the patron’s geocoded address)

Page 99: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a Table (TRANSACTIONS)

Tutorial: Creating Objects for a Small Database 3-5

book_id CONSTRAINT for_key_book_id REFERENCES books(book_id), transaction_date DATE CONSTRAINT tran_date_not_null NOT NULL, transaction_type NUMBER CONSTRAINT tran_type_not_null NOT NULL, CONSTRAINT transactions_pk PRIMARY KEY (transaction_id));

To create the TRANSACTIONS table, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Tables node in the schema hierarchy on the left side, select New Table, and enter the following information. (If a tab or field is not mentioned, do not enter anything for it. Be sure that the Advanced box is not checked when you start creating the table.)

Schema: Specify your current schema as the schema in which to create the table.

Name: TRANSACTIONS

Create the table columns using the following information. After creating each column except the last one (transaction_type), click Add Column to add the next column. (If you accidentally click OK instead of Add Column, right-click the TRANSACTIONS table in the Connections navigator display, select Edit, and continue to add columns.)

After you have entered the last column (transaction_type), check Advanced (next to Schema). This displays a pane for selecting more table options. For this table, you will use the Column Sequences and Foreign Keys panes.

Column Sequences paneYou have already specified TRANSACTION_ID as the primary key, and you will use this pane only to specify that the primary key column values are to be populated automatically. This convenient approach uses a trigger and a sequence (both created automatically by SQL Developer), and ensures that each transaction ID value is unique.

Column: TRANSACTION_ID

Sequence: New Sequence

Trigger: TRANSACTIONS_TRG (The default; a before-insert trigger with this name will be created automatically.)

Foreign Keys tab1. Click Add to create the first of the two foreign keys for the TRANSACTIONS table.

Name: for_key_patron_id

Column Name Type Size Other Information and Notes

transaction_id NUMBER Primary Key. (Unique transaction ID number, with values to be created using a trigger and sequence that will be created automatically)

patron_id NUMBER (Foreign key; must match a patron_id value in the PATRONS table)

book_id VARCHAR2 20 (Foreign key; must match a book_id value in the BOOKS table)

transaction_date DATE (Date and time of the transaction)

transaction_type NUMBER (Numeric code indicating the type of transaction, such as 1 for checking out a book)

Page 100: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a Sequence

3-6 SQL Developer Online Help

Referenced Schema: Name of the schema containing the table with the primary key or unique constraint to which this foreign key refers. Use the schema you have been using for this tutorial.

Referenced Table: PATRONS

Referenced Constraint: PATRONS_PK (The name of the primary key constraint for the PATRONS table. Be sure that the Referenced Column on PATRONS displayed value is PATRON_ID.)

Associations: Local Column: PATRON_ID

Associations: Referenced Column on PATRONS: PATRON_ID

2. Click Add to create the second of the two foreign keys for the TRANSACTIONS table.

Name: for_key_book_id

Referenced Schema: Name of the schema containing the table with the primary key or unique constraint to which this foreign key refers. Use the schema you have been using for this tutorial.

Referenced Table: BOOKS

Referenced Constraint: BOOKS_PK (The name of the primary key constraint for the BOOKS table. Be sure that the Referenced Column on BOOKS displayed value is BOOK_ID.

Associations: Local Column: BOOK_ID

Associations: Referenced Column on BOOKS: BOOK_ID

3. Click OK to finish creating the table.

You have finished creating all the tables. To create a sequence for use in generating unique primary key values for the PATRONS table, go to Section 3.4, "Creating a Sequence".

Related TopicsTutorial: Creating Objects for a Small Database

SQL Developer User Interface

3.4 Creating a SequenceCreate one sequence object, which will be used in INSERT statements to generate unique primary key values in the PATRONS table. (You do not need to create a sequence for the primary key in the TRANSACTIONS table, because you used the SQL Developer feature that enables automatic population of primary key values for that table.) You will use the Create Sequence dialog box to create the sequence declaratively; the sequence that you create will be essentially the same as if you had entered the following statements using the SQL Worksheet:

CREATE SEQUENCE patron_id_seq START WITH 100 INCREMENT BY 1;

After creating the sequence, you can use it in INSERT statements to generate unique numeric values. The following example uses the patron_id_seq sequence in creating a row for a new patron (library user), assigning her a patron ID that is the next available value of the patron_id_seq sequence:

Page 101: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a View

Tutorial: Creating Objects for a Small Database 3-7

INSERT INTO patrons VALUES (patron_id_seq.nextval, 'Smith', 'Jane', '123 Main Street', 'Mytown, MA 01234', null);

To create the sequence, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Sequences node in the schema hierarchy on the left side, select New Sequence, and enter information using the Create Sequence dialog box.

Schema: Specify your current schema as the schema in which to create the sequence.

Name: patron_id_seq

Increment: 1

Start with: 100

Click OK to finish creating the sequence.

To create a view, go to Section 3.5, "Creating a View".

Related TopicsTutorial: Creating Objects for a Small Database

SQL Developer User Interface

3.5 Creating a ViewCreate a view that returns information about patrons and their transactions. This view queries the PATRONS and TRANSACTIONS tables, and returns rows that contain a patron’s ID, last name, and first name, along with a transaction and the transaction type. The rows are ordered by patron ID, and by transaction type within patron IDs.

To create the patrons_trans_view view, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Views node in the schema hierarchy on the left side, select New View, and enter the following information. (If a tab or field is not mentioned, do not enter anything for it.)

Schema: Specify your current schema as the schema in which to create the view.

Name: patrons_trans_view

Entire SQL Query tabIn the Entire SQL Query box, enter (or copy and paste) the following statement:

SELECT p.patron_id, p.last_name, p.first_name, t.transaction_type, t.transaction_date FROM patrons p, transactions t WHERE p.patron_id = t.patron_id ORDER BY p.patron_id, t.transaction_type

Then click Test Syntax, and ensure that you have not made any syntax errors. If you made any errors, correct then and click Test Syntax again.

DDLReview the SQL statement that SQL Developer will use to create the view. If you want to make any changes, go back to the Entire SQL Query tab and make the changes there.

Page 102: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Creating a PL/SQL Procedure

3-8 SQL Developer Online Help

If you want to save the CREATE VIEW statement to a SQL script file, click Save and specify the location and file name.

When you are finished, click OK.

You have finished creating the view. To see the data returned by the view, in the Connections navigator, expand Views, select PATRONS_TRANS_VIEW, and click the Data tab.

Related TopicsTutorial: Creating Objects for a Small Database

SQL Developer User Interface

3.6 Creating a PL/SQL ProcedureCreate a procedure that lists all books with a specified rating. You can then call that procedure with an input parameter (a number from 1 to 10), and the output will be all the titles of all books with that rating.

To create the procedure, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Procedures node in the schema hierarchy on the left side, select New Procedure, and enter the following information using the Create PL/SQL Procedure dialog box.

Object Name: list_a_rating

Click OK. A Source window for the new procedure is opened. Enter (or copy and paste) the following procedure text:

CREATE OR REPLACEPROCEDURE list_a_rating(in_rating IN NUMBER) AS matching_title VARCHAR2(50); TYPE my_cursor IS REF CURSOR; the_cursor my_cursor;BEGIN OPEN the_cursor FOR 'SELECT title FROM books WHERE rating = :in_rating' USING in_rating; DBMS_OUTPUT.PUT_LINE('All books with a rating of ' || in_rating || ':'); LOOP FETCH the_cursor INTO matching_title; EXIT WHEN the_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE(matching_title); END LOOP; CLOSE the_cursor;END list_a_rating;

This procedure uses a cursor (named the_cursor) to return only rows where the book has the specified rating (in_rating parameter), and uses a loop to output the title of each book with that rating.

Click the Save icon to save the procedure.

As a usage example, after creating the procedure named LIST_A_RATING, and after inserting data into the BOOKS table (for example, using the INSERT statements in Section 3.9, "Script for Creating and Using the Library Tutorial Objects"), you could use the following statement to return all books with a rating of 10:

Page 103: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Debugging a PL/SQL Procedure

Tutorial: Creating Objects for a Small Database 3-9

CALL list_a_rating(10);

To run this procedure within SQL Developer after you have inserted the BOOKS table rows shown in Section 3.9, "Script for Creating and Using the Library Tutorial Objects", right-click LIST_A_RATING in the Connections navigator hierarchy display and select Run. In the Run PL/SQL dialog box, change IN_RATING => IN_RATING to IN_RATING => 10, and click OK. The Log window display will now include the following output:

All books with a rating of 10: Moby Dick Software Wizardry

Related TopicsTutorial: Creating Objects for a Small Database

Script for Creating and Using the Library Tutorial Objects

SQL Developer User Interface

3.7 Debugging a PL/SQL ProcedureIf you want to practice debugging a PL/SQL procedure with SQL Developer, create a procedure that is like the list_a_rating procedure that you created in Section 3.6, "Creating a PL/SQL Procedure", but with a logic error. (The coding is also deliberately inefficient, to allow the display of the rating in a variable.)

To create this procedure, if you are not already connected, connect to the database as the user for the schema you are using for this tutorial. Right-click the Procedures node in the schema hierarchy on the left side, select New Procedure, and enter the following information using the Create PL/SQL Procedure dialog box.

Object Name: list_a_rating2

Click OK. A Source window for the new procedure is opened. Enter (or copy and paste) the following procedure text:

CREATE OR REPLACEPROCEDURE list_a_rating2(in_rating IN NUMBER) AS matching_title VARCHAR2(50); matching_rating NUMBER; TYPE my_cursor IS REF CURSOR; the_cursor my_cursor; rating_cursor my_cursor;BEGIN OPEN the_cursor FOR 'SELECT title FROM books WHERE rating <= :in_rating' USING in_rating; OPEN rating_cursor FOR 'SELECT rating FROM books WHERE rating <= :in_rating' USING in_rating; DBMS_OUTPUT.PUT_LINE('All books with a rating of ' || in_rating || ':'); LOOP FETCH the_cursor INTO matching_title; FETCH rating_cursor INTO matching_rating; EXIT WHEN the_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE(matching_title); END LOOP; CLOSE the_cursor;

Page 104: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using the SQL Worksheet for Queries

3-10 SQL Developer Online Help

CLOSE rating_cursor;END list_a_rating2;

This procedure contains a logic error in the definition of the_cursor: it selects titles where the rating is less than or equal to a specified rating, whereas it should select titles only where the rating is equal to the specified rating.

Click the Save icon to save the procedure.

Assume that you wanted to run this procedure and list all books with a rating of 10. Right-click LIST_A_RATING2 in the Connections navigator hierarchy display and select Run. In the Run PL/SQL dialog box, change IN_RATING => IN_RATING to IN_RATING => 10, and click OK. In the Log window, however, you see unexpected output: many titles are listed, including some with ratings other than 10. So, you decide to debug the procedure.

To debug the procedure, follow these steps:

1. Click LIST_A_RATING2 in the Connections navigator, then right-click and select Compile for Debug.

2. In the code tab, click the Edit icon (pencil and paper graphic).

3. Set two breakpoints by clicking in the left margin (left of the thin vertical line) beside each of these two lines: FETCH the_cursor INTO matching_title; and FETCH rating_cursor INTO matching_rating;. (Clicking in the left margin toggles the setting and unsetting of breakpoints.) This will enable you to see the values of the matching_title and matching_rating variables as execution proceeds in debug mode.

4. Click LIST_A_RATING2 in the Connections navigator hierarchy display, and on the Debug menu, select Debug. Ensure that the line IN_RATING => IN_RATING has been changed to IN_RATING => 10, and click OK.

5. In the debugging toolbar, click the Resume icon to have execution proceed, stopping at the next breakpoint; note the display in the Smart Data tab in the lower right part of the window. Repeatedly click the Resume icon, noticing especially the value of the rating variable as each row is processed. You will notice the first incorrect result when you see that the title Get Rich Really Fast is included, even though its rating is only 1 (obviously less than 10). (See the screen illustration with debugging information in Section 1.5, "Running and Debugging Functions and Procedures".)

6. When you have enough information to fix the problem, you can click the Terminate icon in the debugging toolbar.

From this debugging session, you know that to fix the logic error, you should change rating <= :in_rating to rating = :in_rating in the definition of the_cursor.

Related TopicsTutorial: Creating Objects for a Small Database

Running and Debugging Functions and Procedures

Run/Debug PL/SQL (dialog box)

3.8 Using the SQL Worksheet for QueriesYou can use the SQL Worksheet to test SQL statements using a database connection. To display the worksheet, from the Tools menu, select SQL Worksheet. In the Select Connection dialog box, select the database connection that you used to create the

Page 105: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Script for Creating and Using the Library Tutorial Objects

Tutorial: Creating Objects for a Small Database 3-11

BOOKS, PATRONS, and TRANSACTIONS tables for the tutorial in Chapter 3, "Tutorial: Creating Objects for a Small Database".

The SQL Worksheet has the user interface shown in Section 1.6, "Using the SQL Worksheet".

In the Enter SQL Statement box, enter the following statement (the semicolon is optional for the SQL Worksheet):

SELECT author_last_name, title FROM books;

Notice the automatic highlighting of SQL keywords (SELECT and FROM in this example).

Click the Execute SQL Statement icon in the SQL Worksheet toolbar. The results of the query are displayed on the Results tab under the area in which you entered the SQL statement.

In the Enter SQL Statement box, enter (or copy and paste) the following statement, which is the same as the SELECT statement in the view you created in Creating a View:

SELECT p.patron_id, p.last_name, p.first_name, t.transaction_type, t.transaction_date FROM patrons p, transactions t WHERE p.patron_id = t.patron_id ORDER BY p.patron_id, t.transaction_type;

Click the Execute SQL Statement icon in the SQL Worksheet toolbar, and view the results of the query.

Click the Execute Explain Plan icon in the SQL Worksheet toolbar to see the execution plan (displayed on the Explain tab) that Oracle Database follows to execute the SQL statement. The information includes the optimizer strategy and the cost of executing the statement. (For information about how to generate and interpret execution plans, see Oracle Database Performance Tuning Guide.)

Related TopicsTutorial: Creating Objects for a Small Database

Using the SQL Worksheet

3.9 Script for Creating and Using the Library Tutorial ObjectsThe following statements create and use the database objects that you have created (or will create) for the tutorial in Chapter 3, "Tutorial: Creating Objects for a Small Database". You can view these commands to help you understand the library database objects that are covered in the tutorial.

-- Clean up from any previous tutorial actions.DROP TABLE transactions;DROP TABLE books;DROP TABLE patrons;DROP SEQUENCE patron_id_seq;DROP SEQUENCE transactions_seq;DROP TRIGGER transactions_trg;DROP VIEW patrons_trans_view;DROP PROCEDURE list_a_rating;

Page 106: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Script for Creating and Using the Library Tutorial Objects

3-12 SQL Developer Online Help

DROP PROCEDURE list_a_rating2; set serveroutput on -- Create objects. CREATE TABLE books ( book_id VARCHAR2(20), title VARCHAR2(50) CONSTRAINT title_not_null NOT NULL, author_last_name VARCHAR2(30) CONSTRAINT last_name_not_null NOT NULL, author_first_name VARCHAR2(30), rating NUMBER, CONSTRAINT books_pk PRIMARY KEY (book_id), CONSTRAINT rating_1_to_10 CHECK (rating IS NULL OR (rating >= 1 and rating <= 10)), CONSTRAINT author_title_unique UNIQUE (author_last_name, title)); CREATE TABLE patrons ( patron_id NUMBER, last_name VARCHAR2(30) CONSTRAINT patron_last_not_null NOT NULL, first_name VARCHAR2(30), street_address VARCHAR2(50), city_state_zip VARCHAR2(50), location MDSYS.SDO_GEOMETRY, CONSTRAINT patrons_pk PRIMARY KEY (patron_id)); CREATE TABLE transactions ( transaction_id NUMBER, patron_id CONSTRAINT for_key_patron_id REFERENCES patrons(patron_id), book_id CONSTRAINT for_key_book_id REFERENCES books(book_id), transaction_date DATE CONSTRAINT tran_date_not_null NOT NULL, transaction_type NUMBER CONSTRAINT tran_type_not_null NOT NULL, CONSTRAINT transactions_pk PRIMARY KEY (transaction_id)); CREATE SEQUENCE patron_id_seq START WITH 100 INCREMENT BY 1; -- The sequence for the transaction_id -- in the tutorial is created automatically,-- and may have the name TRANSACTIONS_SEQ.CREATE SEQUENCE transactions_seq START WITH 1 INCREMENT BY 1; -- The before-insert trigger for transaction ID values-- in the tutorial is created automatically,-- and may have the name TRANSACTIONS_TRG.CREATE OR REPLACE TRIGGER transactions_trg BEFORE INSERT ON TRANSACTIONS FOR EACH ROW BEGIN SELECT TRANSACTIONS_SEQ.NEXTVAL INTO :NEW.TRANSACTION_ID FROM DUAL;

Page 107: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Script for Creating and Using the Library Tutorial Objects

Tutorial: Creating Objects for a Small Database 3-13

END;/ CREATE VIEW patrons_trans_view AS SELECT p.patron_id, p.last_name, p.first_name, t.transaction_type, t.transaction_date FROM patrons p, transactions t WHERE p.patron_id = t.patron_id ORDER BY p.patron_id, t.transaction_type; -- Procedure: List all books that have a specified rating.CREATE OR REPLACE PROCEDURE list_a_rating(in_rating IN NUMBER) AS matching_title VARCHAR2(50); TYPE my_cursor IS REF CURSOR; the_cursor my_cursor;BEGIN OPEN the_cursor FOR 'SELECT title FROM books WHERE rating = :in_rating' USING in_rating; DBMS_OUTPUT.PUT_LINE('All books with a rating of ' || in_rating || ':'); LOOP FETCH the_cursor INTO matching_title; EXIT WHEN the_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE(matching_title); END LOOP; CLOSE the_cursor;END;/show errors; -- Insert and query data. INSERT INTO books VALUES ('A1111', 'Moby Dick', 'Melville', 'Herman', 10);INSERT INTO books VALUES ('A2222', 'Get Rich Really Fast', 'Scammer', 'Ima', 1);INSERT INTO books VALUES ('A3333', 'Finding Inner Peace', 'Blissford', 'Serenity', null);INSERT INTO books VALUES ('A4444', 'Great Mystery Stories', 'Whodunit', 'Rodney', 5);INSERT INTO books VALUES ('A5555', 'Software Wizardry', 'Abugov', 'D.', 10); INSERT INTO patrons VALUES (patron_id_seq.nextval, 'Smith', 'Jane', '123 Main Street', 'Mytown, MA 01234', null);INSERT INTO patrons VALUES (patron_id_seq.nextval, 'Chen', 'William', '16 S. Maple Road', 'Mytown, MA 01234', null);INSERT INTO patrons VALUES (patron_id_seq.nextval, 'Fernandez', 'Maria', '502 Harrison Blvd.', 'Sometown, NH 03078', null);INSERT INTO patrons VALUES (patron_id_seq.nextval, 'Murphy', 'Sam', '57 Main Street', 'Mytown, MA 01234', null); INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (100, 'A1111', SYSDATE, 1);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (100, 'A2222', SYSDATE, 2);

Page 108: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Script for Creating and Using the Library Tutorial Objects

3-14 SQL Developer Online Help

INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (101, 'A3333', SYSDATE, 3);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (101, 'A2222', SYSDATE, 1);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (102, 'A3333', SYSDATE, 1);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (103, 'A4444', SYSDATE, 2);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (100, 'A4444', SYSDATE, 1);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (102, 'A2222', SYSDATE, 2);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (102, 'A5555', SYSDATE, 1);INSERT INTO transactions (patron_id, book_id, transaction_date, transaction_type) VALUES (101, 'A2222', SYSDATE, 1); -- Test the view and the procedure.SELECT * FROM patrons_trans_view;CALL list_a_rating(10);

Page 109: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Dialog Boxes for Creating/Editing Objects 4-1

4Dialog Boxes for Creating/Editing Objects

SQL Developer uses dialog boxes for creating and editing database connections and objects in the database (tables, views, procedures, and so on). The dialog boxes sometimes have multiple tabs, each reflecting a logical grouping of properties for that type of object.

For an explanation of any dialog box or tab, click the Help button or press the F1 key.

The dialog boxes are not presented here in any rigorous order, because the help for each box is an independent piece of information and is normally seen when you click Help or press F1 in that box.

Related TopicsDatabase Objects

Tutorial: Creating Objects for a Small Database

4.1 Add ExtensionThis dialog box is displayed when you click Add in the File Types pane of SQL Developer Preferences.

Extension: Specify the file extension, including the period (for example, .xyz).

After you click OK, you can select that extension and modify its details, including the file type, content type, and whether to have files with the extension automatically opened by SQL Developer.

4.2 Check for UpdatesWhen you click Help and then Check for Updates, you can check for and download available SQL Developer updates. The following pages may be displayed. (If you have enabled the SQL Developer preference to check for updates automatically at startup, and if you click to see available updates at startup, the Updates page is displayed.)

Note: For all Name fields, any name that you type is automatically converted to and stored in the database metadata in uppercase, unless you enclose the name in quotation marks (" "). (Names of database objects in SQL and PL/SQL statements are not case-sensitive.)

To include lowercase characters, special characters, or spaces in object names, enclose the name in quotation marks (" ") when you type it. Example: "My table"

Page 110: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Choose Directory

4-2 SQL Developer Online Help

If you are unable to check for updates because your system is behind a firewall, you may need to set the SQL Developer user preferences for Web Browser and Proxy.

1. Source: Select the source or sources to be checked for available updates: any or all of some specified online update centers, or a local ZIP file containing an update bundle.

2. Updates: If any updates are available from the selected source or sources, select those that you want to download.

The Show Upgrades Only option restricts the display to upgrades of currently installed SQL Developer components. To enable the display of all new and updated components, whether currently installed or not, uncheck this option.

After you click Next, you may be prompted to enter your Oracle Web Account user name and password. If you do not have an account, you can click the Sign Up link.

3. Install Location: Select whether to install the extensions for all users or just for the current user.

4. Download: If you selected any updates to download, this page displays the progress of the download operation.

5. Summary: Displays information about the updates that were downloaded. After you click Finish, you will be asked if you want to install the updates now and restart SQL Developer.

4.3 Choose DirectoryThis is a standard box for choosing a directory in which to place files: use Location to navigate to (double-clicking) the folder in which to save the files, or enter a directory name. If the directory does not already exist, it is created.

4.4 Create/Edit New ObjectSpecify the type of object to create. After you click OK, the dialog box for creating that type of object is displayed.

Filter By: Available Items displays the types of objects that you can create in the current database connection; All Items displays all types of objects (some of which may not be available for selection).

Categories: A hierarchical display of categories of objects.

Items: Types of objects that you can create within the selected category.

Related TopicsDatabase Objects

4.5 Create/Edit/Select Database ConnectionThe database connection dialog box displays any existing connections. Depending on the context, you can select a connection to connect to the database, edit the information about existing connections, or specify information while creating a new connection. (See Creating and Editing Connections.)

Connection Name: An alias for a connection to the database using the information that you enter. (The connection name is not stored in the database, and the connection

Page 111: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit/Select Database Connection

Dialog Boxes for Creating/Editing Objects 4-3

is not a database object.) Suggestion: Include the database name (SID) and user name in the connection name. Example: personnel_herman for connecting to the personnel database as user Herman.

Username: Name of the database user for the connection. This user must have sufficient privileges to perform the tasks that you want perform while connected to the database, such as creating, editing, and deleting tables, views, and other objects.

Password: Password associated with the specified database user.

Oracle tabThe following information applies to a connection to an Oracle Database.

Role: The set of privileges to be associated with the connection. For a user that has been granted the SYSDBA system privilege, you can specify a connection that includes the privilege.

Basic connection typeHost Name: Host system for the Oracle database.

Port: Listener port.

SID: Database name.

Service Name: Network service name of the database (for a remote database connection over a secure connection).

TNS connection typeNetwork Alias: Oracle Net alias for the database. (The list for selecting a network alias is initially filled from the tnsnames.ora file on your system, if that file exists.)

Connect Identifier: Oracle Net connect identifier.

Advanced connection typeCustom JDBC URL: URL for connecting directly from Java to the database; overrides any other connection type specification. If you are using TNS or a naming service with the OCI driver, you must specify this information: Example: jdbc:oracle:thin:scott/tiger@localhost:1521:orcl

Access tabFor a connection to a Microsoft Access database, click Browse and find the database (.mdb) file. However, to be able to use the connection, you must first ensure that the system tables in the database file are readable by SQL Developer, as follows:

1. Open the database (.mdb) file in Microsoft Access.

2. Click Tools, then Options, and on the View tab ensure that System Objects are shown.

3. Click Tools, then Security, and, if necessary, modify the user and group permissions as follows: select all tables whose names start with Msys, and give the Admin user at least Read Design and Read Data permission on these tables.

4. Save changes and close the Access database file.

5. Create and test the connection in SQL Developer.

MySQL tabThe following information applies to a connection to a MySQL database.

Page 112: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Rename Connection (Migration)

4-4 SQL Developer Online Help

Note that to connect to a MySQL database, you must first download the appropriate MySQL connection driver, and then click Tools, then Preferences, and use the SQL Developer user preference pane for Database: Third Party JDBC Drivers to add the driver.

Host Name: Host system for the MySQL database.

Port: TCP/IP Port on which the MySQL server will listen.

Choose Database: Name of the MySQL database.

Zero Date Handling: Because the MySQL JDBC driver cannot handle the default 0000-00-00 date, specify one of the following options for handling this date: Set to NULL to set it to a null value, or Round to 0001-01-01 to set it to 0001-01-01.

SQL Server tabThe following information applies to a connection to a Microsoft SQL Server database.

Note that to connect to a Microsoft SQL Server database, you must first download the appropriate Microsoft SQL Server connection driver, and then click Tools, then Preferences, and use the SQL Developer user preference pane for Database: Third Party JDBC Drivers to add the driver.

Host Name: Host system for the Microsoft SQL Server database.

Port: TCP/IP Port on which Microsoft SQL Server will listen.

Retrieve Database: Name of the Microsoft SQL Server database.

Creating and Editing ConnectionsTo create a new connection when no connections exist, enter the connection information and click Connect. To test the connection before you create it, click Test.

To create a new connection when one or more connections already exist, click New, enter the connection information, and click Connect. To test the connection before you create it, click Test.

To edit an existing connection, click in its entry in the Connection Name column, change any connection information on the left side, and click Connect. To test the connection before you save changes to it, click Test.

Related TopicsDatabase Connections

SQL Developer User Interface

4.6 Rename Connection (Migration)This dialog box is displayed when you right-click a captured or converted model select Rename Connection. To rename the model, change the name and click OK.

4.7 Select ConnectionUse this dialog box to select a database connection for use with a specific SQL Developer feature (for example, the SQL worksheet or the Reports navigator). After you click OK, the interface for the component is displayed , with the current user the same as the one specified in the connection.

Page 113: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Copy Oracle Schema

Dialog Boxes for Creating/Editing Objects 4-5

To create a new database connection, click New; to edit the selected database connection, click Edit. In both cases, a dialog box for specifying connection information is displayed (see Section 4.5, "Create/Edit/Select Database Connection").

Related TopicsDatabase Connections

4.8 Connection InformationUse this dialog box to specify the user name and password for the selected database connection.

If the specified user name does not exist in the database associated with the connection, or if the specified password is not the correct one for that user, the connection is refused.

Related TopicsDatabase Connections

4.9 No Connection FoundThis dialog box is displayed when you attempt to perform an operation that requires a database connection, but no connection currently exists for that operation. For example, you might have opened a SQL file but not selected a connection, or the connection might have disconnected; or you might have tried to perform a schema copy operation without specifying both the From Schema and To Schema connections.

To select a connection in the SQL Worksheet, click OK to close this dialog box, then select a connection from the drop-down list in the SQL Worksheet icon bar.

4.10 Connection Rename ErrorThis dialog box is displayed when you attempt to rename a database connection to a name that is already used for another connection. For example, you might have forgotten to enter a new name for the connection that you want to rename.

To rename the connection, click OK to close this dialog box, then specify a unique connection name.

4.11 Continue After PauseThis dialog box is displayed when a PAUSE statement is encountered in a script that you are running in the SQL Worksheet.

To continue execution at the statement after the PAUSE statement, click Yes. To stop execution and not continue with the statement after the PAUSE statement, click No.

4.12 Copy Oracle SchemaThis dialog box is displayed if you click Tools, then Copy Oracle Schema. Specify the type of operation, and the connections for the source and destination schemas. All database objects are copied from the source schema to the destination schema, subject to any restrictions depending on the type of operation, which determines the behavior if objects of the same name exist in the destination schema.

Page 114: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Select Library

4-6 SQL Developer Online Help

Create Objects: Copies the objects to new objects in the destination schema only if an existing object of that type with the same name does not already exist.

Truncate Objects: Deletes existing rows in any existing table with the same name, and then loads rows from the source.

Drop Objects: Drops any existing table with the same name, and then creates and loads it from the source.

From Schema: Database connection for the schema from which to copy the objects.

To Schema: Database connection for the schema to which to copy the objects

To start the copy operation, click Apply. The Logging Page pane displays messages (informational, warning, and error) during the copy operation.

4.13 Select LibraryThis dialog box is displayed when you click Browse in the Database pane when setting SQL Developer Preferences. Use this box to select the library for the specified JDBC driver class.

Related TopicsDatabase Connections

4.14 Create LibraryThis dialog box is displayed when you click New in the Select Library dialog box, which is displayed when you click Browse in the Database pane when setting SQL Developer Preferences. Use this box to create the library for the specified JDBC driver class.

Related TopicsDatabase Connections

4.15 Excel Import DataThis dialog box is displayed when you right-click a table name in the Connections navigator and select Import Data, then Excel. It enables you to from an Excel spreadsheet into the table.

Worksheet: Name of a worksheet in the Microsoft Excel file.

Header row?: If this option is checked, the first row in the selected Microsoft Excel worksheet is considered a row with text for the column headings. If this option is not checked, the first row is considered to contain worksheet data.

Data Preview: Displays a read-only preview of the contents of the worksheet.

Columns tabAvailable Columns: Lists the Microsoft Excel worksheet columns from which you can select for import into columns in the table. To select one or more worksheet columns, use the arrow buttons to move columns from Available to Selected.

Selected Columns: Lists the columns whose data is to be imported into columns in the database table. To change the order of a selected column in the list for the import operation, select it and use the up and down arrow buttons.

Page 115: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Database Link

Dialog Boxes for Creating/Editing Objects 4-7

Data Types tabDisplays information about the data types of the columns to be imported.

DML tabThis tab contains a read-only display of a SQL statement that will perform the operation.

To perform the import operation, click Insert.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.16 Export/Import Connection DescriptorsThe Export Connection Descriptors dialog box exports information about one or more database connections to an XML file. The Import Connection Descriptors dialog box imports connections that have been exported. Connections that you import are added to any connections that already exist in SQL Developer.

File Name: Name of the XML file to contain exported information or that contains information to be imported. Use the Browse button to specify the location.

Connections: Names of connections that you can select for the export or import operation.

Related TopicsDatabase Connections

4.17 Create/Edit Database LinkThe following information applies to a database link, which is a database object in one database that enables you to access objects on another database, as explained in Section 1.2.1, "Database Links (Public and Private)".

Public: If this option is checked, the database link is public (available to all users). If this option is not checked, the database link is private and is available only to you.

Schema: Database schema in which to create the database link.

Name: Name of the database link. Must be unique within a schema.

Host Name: The service name of a remote database. If you specify only the database name, Oracle Database implicitly appends the database domain to the connect string to create a complete service name. Therefore, if the database domain of the remote database is different from that of the current database, you must specify the complete service name.

Current User: Creates a current user database link. The current user must be a global user with a valid account on the remote database. If the database link is used directly, that is, not from within a stored object, then the current user is the same as the connected user.

Fixed User: Creates a fixed user database link, for which you specify the user name and password used to connect to the remote database.

Page 116: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Index

4-8 SQL Developer Online Help

Shared: If this option is checked, a single network connection is used to create a public database link that can be shared among multiple users. In this case, you must also specify the Authentication information.

Authentication - User Name and Password: The user name and password on the target instance. This information authenticates the user to the remote server and is required for security. The specified user and password must be a valid user and password on the remote instance.

DDL tabYou can review and save the SQL statement that SQL Developer will use to create the database link.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.18 Create/Edit IndexThe following information applies to an index, which is a database object that contains an entry for each value that appears in the indexed column(s) of the table or cluster and provides direct, fast access to rows, as explained in Section 1.2.4, "Indexes".

Schema: Database schema that owns the table associated with the index.

Table: Name of the table associated with the index.

Name: Name of the index. Must be unique within a schema.

Index Type: Normal for a standard Oracle index, in which case you also specify non-unique, unique, or bitmap, as well as one or more index expressions; or Text for an Oracle Text index (created with INDEXTYPE IS CTXSYS.CONTEXT), in which case you specify the column to be indexed.

Non-unique means that the index can contain multiple identical values; Unique means that no duplicate values are permitted; Bitmap stores rowids associated with a key value as a bitmap.

Index: A list of index expressions, that is, the table columns or column expressions in the index. To add an index expression, click the Add Column Expression (+) icon; this adds a column name here and in Column Expression, where you can edit it. To delete an index expression, click the Remove Column Expression (X) icon; to move an index expression up or down in the list, click the Move Column Up and Move Column Down icons. An index must have at least one index expression.

For example, to create an index on the AUTHOR_LAST_NAME column of the BOOKS table from the tutorial (see Section 3.1, "Creating a Table (BOOKS)"), click the + icon, and select AUTHOR_LAST_NAME in Column Name or Expression (next field), which changes BOOKS to AUTHOR_LAST_NAME in the Index field.

Column Name or Expression: A column name or column expression. A column expression is an expression built from columns, constants, SQL functions, and user-defined functions. When you specify a column expression, you create a function-based index.

Order: ASC for an ascending index (index values sorted in ascending order); DESC for a descending index (index values sorted in descending order).

Page 117: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Materialized View Log

Dialog Boxes for Creating/Editing Objects 4-9

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.19 Create/Edit Materialized View LogUser this dialog box to create of edit a materialized view log, which is a table associated with the master table of a materialized view. For more information, see Section 1.2.6, "Materialized View Logs".

Schema: Database schema in which to create the materialized view log.

Name: Name of the master table of the materialized view to be associated with this materialized view log.

Properties tabTablespace: Tablespace in which the materialized view log is to be created.

Logging: LOGGING or NOLOGGING, to establish the logging characteristics for the materialized view log.

Row ID: Yes indicates that the rowid of all rows changed should be recorded in the materialized view log; No indicates that the rowid of all rows changed should not be recorded in the materialized view log.

Primary Key: Yes indicates that the primary key of all rows changed should be recorded in the materialized view log; No indicates that the primary key of all rows changed should not be recorded in the materialized view log.

New Values: INCLUDING saves both old and new values for update DML operations in the materialized view log; EXCLUDING disables the recording of new values in the materialized view log. If this log is for a table on which you have a single-table materialized aggregate view, and if you want the materialized view to be eligible for fast refresh, you must specify INCLUDING.

Cache: For data that will be accessed frequently, CACHE specifies that the blocks retrieved for this log are placed at the most recently used end of the least recently used (LRU) list in the buffer cache when a full table scan is performed. This attribute is useful for small lookup tables. NOCACHE specifies that the blocks are placed at the least recently used end of the LRU list.

Parallel: If this option is checked, parallel operations will be supported for the materialized view log.

Object ID: For a log on an object table only: Yes indicates that the system-generated or user-defined object identifier of every modified row should be recorded in the materialized view log; No indicates that the system-generated or user-defined object identifier of every modified row should not be recorded in the materialized view log.

Sequence: Yes indicates that a sequence value providing additional ordering information should be recorded in the materialized view log; No indicates that a sequence value providing additional ordering information should not be recorded in the materialized view log. Sequence numbers (that is, Yes for this option) are necessary to support fast refresh after some update scenarios.

Available Filter Columns: Additional columns, which are non-primary-key columns referenced by subquery materialized views, to be recorded in the materialized view

Page 118: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create PL/SQL Package

4-10 SQL Developer Online Help

log. To select one or more filter columns, use the arrow buttons to move columns from Available to Selected.

DDL tabIf you are editing an existing materialized view log or if you have only partially created a materialized view log, this tab contains a read-only display of a SQL statement that reflects the current definition of the materialized view log.

To save the SQL statement to a script file, click Save and specify the location and file name.

Related TopicsMaterialized View Logs

Create/Edit View (information related to materialized views)

Dialog Boxes for Creating/Editing Objects

4.20 Create PL/SQL PackageUse this dialog box to create a package to contain PL/SQL subprograms (functions or procedures, or a combination).

Schema: Database schema in which to create the PL/SQL package.

Name: Name of the package. Must be unique within a schema.

Add New Source in Lowercase: If this option is checked, new text is entered in lowercase regardless of the case in which you type it. This option affects only the appearance of the code, because PL/SQL is not case sensitive in its execution.

The package is created and is displayed in the Editor window, where you can enter the details.

For more information, see Subprograms and Packages: Usage Information.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.21 Create PL/SQL Subprogram (Function or Procedure)Use this dialog box to create a PL/SQL subprogram (function or procedure). A function returns a value; a procedure does not return a value.

Specify the information for the package and for each parameter, then click OK to create the subprogram and have it displayed in the Editor window, where you can enter the details.

Schema: Database schema in which to create the PL/SQL subprogram.

Name: Name of the subprogram. Must be unique within a schema.

Add New Source in Lowercase: If this option is checked, new text is entered in lowercase regardless of the case in which you type it. This option affects only the appearance of the code, because PL/SQL is not case sensitive in its execution.

Page 119: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Sequence

Dialog Boxes for Creating/Editing Objects 4-11

Parameters tabFor each parameter in the procedure to be created, specify the following information.

Name: Name of the parameter.

Type: Data type of the parameter.

Mode: IN for input only, OUT for output only, or IN OUT for input and output (that is, the output is stored in the parameter overwriting its initial input value).

Default Value: Optionally, the default value if the parameter is omitted or specified as null when the subprogram is called.

To add a parameter, click the Add (+) icon; to delete a parameter, click the Remove (X) icon; to move a parameter up or down in the list, click the up-arrow or down-arrow icon.

DDL tabThis tab contains a read-only display of a SQL statement that reflects the current definition of the subprogram.

For more information, see Subprograms and Packages: Usage Information.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.22 Create/Edit SequenceThe following information applies to a sequence, which is an object from which multiple users may generate unique integers. You can use sequences to automatically generate primary key values.

Schema: Database schema in which to create the sequence.

Name: Name of the sequence. Must be unique within a schema.

Increment: Interval between successive numbers in a sequence.

Start with: Starting value of the sequence.

Min value: Lowest possible value for the sequence. The default is 1 for an ascending sequence and -(10^26) for a descending sequence.

Max value: Highest possible value for the sequence. The default is 10^27 for an ascending sequence and -1 for a descending sequence.

Cycle: Indicates whether the sequence "wraps around" to reuse numbers after reaching its maximum value (for an ascending sequence) or its minimum value (for a descending sequence). If cycling of values is not enabled, the sequence cannot generate more values after reaching its maximum or minimum value.

Cache and Cache size: If Cache is checked, sequence values are preallocated in cache, which can improve application performance; Cache size indicates the number of sequence values preallocated in cache. If Cache is not checked, sequence values are not preallocated in cache.

Order: Indicates whether sequence numbers are generated in the order in which they are requested. If no ordering is specified, sequence numbers are not guaranteed to be in the order in which they were requested.

Page 120: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create SQL File

4-12 SQL Developer Online Help

DDL tabYou can review the SQL statement that SQL Developer will use to create a new sequence or that reflects any changes you have made to the sequence properties.

For information about sequences, see Managing Sequences.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.23 Create SQL FileUse this dialog box to create a SQL script file and to open the file in a SQL Worksheet for editing.

File Name: Name and extension of the file to be created. The default and recommended extension is .sql.

Directory Name: Directory path for the file. To specify a directory, you can click Browse. The default directory is the Location of User-Related Information.

Related TopicsDialog Boxes for Creating/Editing Objects

4.24 Create/Edit SynonymThe following information applies to a synonym, which is an alternative name for a table, view, sequence, procedure, stored function, package, materialized view, Java class database object, user-defined object type, or another synonym.

Public: If this option is checked, the synonym is accessible to all users. (However each user must have appropriate privileges on the underlying object in order to use the synonym.) If this option is not checked, the synonym is a private synonym, and is accessible only within its schema.

Schema: Database schema in which to create the synonym.

Name: Name of the synonym. A private synonym must be unique within its schema; a public synonym must be unique within the database.

For - Referenced Schema: Schema containing the object or name to which this synonym refers.

Object Based: Specify the object to which this synonym refers.

Name Based: Enter the name of the object to which this synonym refers.

DDL tabYou can review the SQL statement that SQL Developer will use to create a new synonym or that reflects any changes you have made to the synonym properties.

For information about synonyms, see Managing Synonyms.

Related TopicsDatabase Objects

SQL Developer User Interface

Page 121: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create Table (quick creation)

Dialog Boxes for Creating/Editing Objects 4-13

Dialog Boxes for Creating/Editing Objects

4.25 Create Table (quick creation)This dialog box (if you do not check the Advanced box) creates a new table quickly by specifying columns and some frequently used features. (If you need to add or change features after you create the table, you can edit the table by clicking the Modify icon while viewing the table or by right-clicking its name in the Connections navigator and selecting Properties, which displays the Create/Edit Table (with advanced options) dialog box.)

To create a new table, the only things you must do are specify the schema and the table name, add the necessary columns, and click OK. Although it is not required, you should also specify a primary key.

Advanced: If this option is checked, the dialog box changes to include an extended set of features for creating the table. For example, you must check this option if you want to create a partitioned table, an index-organized table, or an external table.

Schema: Database schema in which to create the table.

Name: Name of the table. Must be unique within a schema.

Table tab (quick creation)Specifies properties for each column in the table.

Columns: Lists the columns currently in the table.

Column Name: Name of the column. Must be unique within the table. Suggestion: For a new column, replace any default name, such as COLUMN1.

Type: Data type for the column. The drop-down list includes only selected frequently used data types. To specify any other type for the column, you must use the Columns panel of the Create/Edit Table (with advanced options) dialog box.

Size: For VARCHAR2 data, the maximum size of the column data; for NUMBER data, the maximum number of digits.

Not Null: If this option is checked, the column must contain data; you cannot specify no value or an explicit null value for this column when you insert a row. If this option is not checked, the column can contain either data or no data.

Primary Key: If this option is checked, the column is the primary key, or part of the primary key, for the table. The primary key is the column, or set of columns, that uniquely identifies each row in the table. A primary key column cannot be null.

If you want to have the primary key values automatically populated by a convenient method that uses a before-insert trigger and a sequence, then before you finish creating the table, you must check the Advanced box and use the Primary Key tab, starting with the Populate Primary Key Column field.

To add another column, click Add Column. When you are finished adding columns, either click OK or click the DDL tab to review the CREATE TABLE statement.

Note: To add a column after the currently selected column, click Add Column; to delete a column, select it and click Remove Column.

Page 122: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

4-14 SQL Developer Online Help

DDL tab (quick creation)You can review and save the CREATE TABLE statement that SQL Developer will use to create a new table or that reflects any changes you have made to the table properties. If you want to make any changes, go back to the Table tab and make the changes there.

When you are finished, click OK.

Related TopicsCreate/Edit Table (with advanced options) (dialog box including advanced features)

Database Objects

SQL Developer User Interface

Tutorial: Creating Objects for a Small Database

4.26 Create/Edit Table (with advanced options)The table dialog box is used for creating a new table or editing an existing table. The table properties are grouped under several tabs.

To create a new table, the only things you must do are specify the schema and the table name, add the necessary columns, and click OK. Although it is not required, you should also specify a primary key using the Primary Key pane. For other table-related features, use the appropriate tabs; the order in which you visit tabs usually does not matter, although you might find it convenient to visit them in the sequence in this topic. If you are editing an existing table, you can visit the tabs in any order.

If you click OK before you are finished creating or editing the table, right-click the table name in the Connections navigator, select Edit, and continue creating or editing the table.

Schema: Database schema in which to create the table.

Name: Name of the table. Must be unique within a schema.

Type: The type of table:

■ Normal: A regular database table. It can be partitioned (see Partitioning pane, Subpartition Templates pane, and Partition Definitions pane).

■ External: An external table (see External Table Properties pane).

■ Index Organized: An index-organized table (see Index Organized Properties pane).

■ Temporary Table: A temporary table, which is not stored permanently in the database. The temporary table definition persists in the same way as the definition of a regular table, but the table segment and any data in the temporary table persist only for the duration of either the transaction (Transaction option) or the session (Session option).

Columns paneSpecifies properties for each column in the table.

Columns: Lists the columns currently in the table. To add a column, click the Add Column (+) icon; to delete a column, select it and click the Remove Column (X) icon; to move a column up or down in the table definition, select it and use the up-arrow and down-arrow buttons.

Page 123: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

Dialog Boxes for Creating/Editing Objects 4-15

Name: Name of the column. Must be unique within the table. Suggestion: For a new column, replace any default name, such as COLUMN1.

Datatype: Simple indicates a simple (non-object) data type; Complex indicates an object type. For a complex type, you must specify the schema and the type name (for example, MDSYS and SDO_GEOMETRY for the Oracle Spatial geometry type).

Type: Name of the data type. Most of the remaining information depends on the specific type.

Precision: For numeric data, the precision (total number of significant digits that can be represented) of the column data.

Scale: For numeric data, the scale (number of digits after the decimal point) of the column data.

Size: For character data, the maximum size of the column data.

Units: For character data, the units represented by the Size: BYTE for bytes or CHAR for characters. This attribute is important if the database can contain data in Unicode format, with multiple bytes for each character.

Default: For relevant types, the default value inserted into the column if no value is specified when a row is inserted.

Cannot be NULL: If this option is checked, the column must contain data; you cannot specify no value or an explicit null value for this column when you insert a row. If this option is not checked, the column can contain either data or no data. A primary key column (see Primary Key pane) cannot be null.

Comment: Optional descriptive comment about the column.

To add another column, click the Add Column (+) icon.

Primary Key paneSpecifies the primary key for the table. The primary key is the column, or set of columns, that uniquely identifies each row in the table.

An index is automatically created on the primary key.

Name: Name of the constraint to be associated with the primary key definition. Must be unique within the database.

Enabled: If this option is checked, the primary key constraint is enforced: that is, the data in the primary key column (or set of columns) must be unique and not null.

Available Columns: Lists the columns that are available to be added to the primary key definition.

Selected Columns: Lists the columns that are included in the primary key definition.

To add a column to the primary key definition, select it in Available Columns and click the Add (>) icon; to remove a column from the primary key definition, select it in Selected Columns and click the Remove (<) icon. To move all columns from available to selected (or the reverse), use the Add All (>>) or Remove All (<<) icon. To move a column up or down in the primary key definition, select it in Selected Columns and use the arrow buttons.

Note: After you add a column, to add another column, click the Add Column (+) icon.

Page 124: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

4-16 SQL Developer Online Help

The remaining fields (Populate Primary Key Column through Trigger Name) appear only when you are creating a table. They are not available when you are editing an existing table.

Populate Primary Key Column: When you are creating a table, if you want to use a trigger and a sequence to have a unique value automatically inserted into the primary key column when you insert a new row, specify the primary key column.

From: An existing sequence that you select, or a new sequence whose name you enter. (For a new sequence, SQL Developer creates the sequence automatically using the name that you enter.)

Trigger Name: The name for the before-insert trigger that will be automatically created. This trigger uses the sequence to generate a new value for the primary key when a row is inserted. For an example of using this technique, see the tutorial section Section 3.3, "Creating a Table (TRANSACTIONS)".

Unique Constraints paneSpecifies one or more unique constraints for the table. A unique constraint specifies a column, or set of columns, whose data values must be unique: each data value must not be null, and it must not be the same as any other value in the column.

For a multicolumn unique constraint, the combination of values must be unique, and no column in the constraint definition can have a null value. For example, if you specify the office_name and city columns for a unique constraint, you could not have two Sales offices in Chicago, but you could have a Sales office in Chicago and a Sales office in Atlanta.

Unique Constraints: Lists the unique constraints currently defined on the table. To add a unique constraint, click the Add button; to delete a unique constraint, select it and click the Remove button.

Name: Name of the unique constraint. Must be unique within the database.

Enabled: If this option is checked, the unique constraint is enforced.

Available Columns: Lists the columns that are available to be added to the unique constraint definition.

Selected Columns: Lists the columns that are included in the unique constraint definition.

To add a column to the unique constraint definition, select it in Available Columns and click the Add (>) icon; to remove a column from the unique constraint definition, select it in Selected Columns and click the Remove (<) icon. To move all columns from available to selected (or the reverse), use the Add All (>>) or Remove All (<<) icon. To move a column up or down in the unique constraint definition, select it in Selected Columns and use the arrow buttons.

Foreign Keys paneSpecifies one or more foreign keys for the table. A foreign key specifies a column ("local column"), each of whose data values must match a value in the primary key or unique constraint of another table.

Note: After you add a unique constraint, to add another unique constraint, click the Add button.

Page 125: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

Dialog Boxes for Creating/Editing Objects 4-17

Foreign Keys: Lists the foreign keys currently defined on the table. To add a foreign key, click the Add button; to delete a foreign key, select it and click the Remove button.

Name: Name of the foreign key definition. Must be unique within the database.

Enabled: If this option is checked, the foreign key is enforced.

Referenced Schema: Name of the schema containing the table with the primary key or unique constraint to which this foreign key refers.

Referenced Table: Name of the table with the primary key or unique constraint to which this foreign key refers.

Referenced Constraint: Name of the primary key or unique constraint to which this foreign key refers.

Associations: Local Column: Lists the column in the currently selected (local) table that is included in the foreign key definition. For each local column in the foreign key definition, select the name of a column in the local table.

Associations: Referenced Column on [table]: For each local column, identifies the column in the other (foreign) table that must have a value matching the value in the local column.

Check Constraints paneSpecifies one or more check constraints for the table. A check constraint specifies a condition that must be met when a row is inserted into the table or when an existing row is modified.

Check Constraints: Lists the check constraints currently defined on the table. To add a check constraint, click the Add button; to delete a check constraint, select it and click the Remove button.

Name: Name of the check constraint definition. Must be unique within the database.

Enabled: If this option is checked, the check constraint is enforced.

Condition: Condition that must be met for a row. Can be any valid CHECK clause (without the CHECK keyword). For example, to indicate that the value in a numeric column named RATING must be from 1 to 10, you can specify: rating >=1 and rating <= 10

To add another check constraint, click the Add button.

Indexes paneSpecifies properties for each index on the table.

Indexes: Lists the indexes currently defined on the table. To add an index, click the Add Index (+) icon; to delete an index, select it and click the Remove Index (X) icon.

Note: After you add a foreign key, to add another foreign key, click the Add button.

Note: After you add a check constraint, to add another check constraint, click the Add button.

Page 126: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

4-18 SQL Developer Online Help

Name: Name of the index. Must be unique within the schema.

Index: A list of index expressions, that is, the table columns or column expressions in the index. To add an index expression, click the Add Column Expression (+) icon; this adds a column name here and in Column Expression, where you can edit it. To delete an index expression, click the Remove Column Expression (X) icon; to move an index expression up or down in the list, click the Move Column Up and Move Column Down icons. An index must have at least one index expression.

For example, to create an index on the AUTHOR_LAST_NAME column of the BOOKS table from the tutorial (see Creating a Table (BOOKS)), click the + icon, and select AUTHOR_LAST_NAME in Column Name or Expression (next field), which changes BOOKS to AUTHOR_LAST_NAME in the Index field.

Column Name or Expression: A column name or column expression. A column expression is an expression built from columns, constants, SQL functions, and user-defined functions. When you specify a column expression, you create a function-based index.

Order: ASC for an ascending index (index values sorted in ascending order); DESC for a descending index (index values sorted in descending order).

Column Sequences paneEnables you to specify sequences and before-insert triggers to be used in populating a column with values. This approach is especially convenient for automatically populating primary key column values with unique values.

Column: Name of the column for which a sequence and a trigger are to be used to insert unique values. The data type of the column must be numeric.

Sequence: None causes no sequence to be used; Existing Sequence uses the sequence that you specify; New Sequence creates a new sequence with a default or specified name.

Trigger: Before-insert trigger that automatically inserts the next value of the specified sequence into the column when a new row is inserted.

Storage Options paneSpecifies storage options for the table, enabling you to override the default storage options.

Tablespace: Name of the tablespace for the table.

Pct Free: Percentage of space in each of the data blocks of the table reserved for future updates to the rows of the table. You can enter a value from 0 through 99.

Pct Used: Minimum percentage of used space that Oracle maintains for each data block of the table. A block becomes a candidate for row insertions when its used space falls below the Pct Used value. You can enter a value from 1 through 99.

Extents - Initial: Size of the first extent of the table. Specify K (kilobytes) or M (megabytes) for the unit associated with the number.

Extents - Next: Size of the next extent to be allocated to the table. Specify K (kilobytes) or M (megabytes) for the unit associated with the number.

Note: After you add an index, to add another index, click the Add Index (+) icon.

Page 127: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

Dialog Boxes for Creating/Editing Objects 4-19

Extents - Min: Minimum number of extents allocated when the table is created.

Extents - Max: Maximum number of extents allocated when the table is created. Unlimited (if checked) means that there is no maximum (and any specified maximum is ignored).

Pct Increase: Percentage that each extent grows over the previous extent.

Ini Trans: Number of update transaction entries for which space is initially reserved in the data block header.

Max Trans: Number of transaction entries that could concurrently use data in a data block. This parameter has been deprecated. Oracle Database now automatically allows up to 255 concurrent update transactions for any data block, depending on the available space in the block.

Free Lists - Lists: Number of free lists for each of the free list groups for the table. The default and minimum value for this parameter is 1, meaning that each free list group contains one free list.

Free Lists - List Groups: Number of groups of free lists for the table. The default and minimum value for this parameter is 1. Oracle uses the instance number of Real Application Clusters instances to map each instance to one free list group.

Buffer Pool: <DEFAULT> means to use the Oracle Database default. KEEP means to put blocks from the segment into the Keep buffer pool; maintaining an appropriately sized Keep buffer pool lets Oracle retain the database object in memory to avoid I/O operations. RECYCLE means to put blocks from the segment into the Recycle pool; an appropriately sized Recycle pool reduces the number of objects whose default pool is the Recycle pool from taking up unnecessary cache space.

Logging: <DEFAULT> means to use the Oracle Database default. ON means that the table creation and any subsequent direct loader (SQL*Loader) and direct-path INSERT operations against the table, partition, or LOB storage are logged in the redo log file. OFF means that these operations are not logged in the redo log file.

LOB Parameters paneSpecifies storage options for LOB (large object) columns, enabling you to override the default storage options.

Column: Name of the LOB column.

Store VARRAY as LOB: If this option is checked: If the maximum varray size is less than 4000 bytes, the database stores the varray as an inline LOB unless you have disabled storage in row; if the maximum varray size is greater than 4000 bytes or if you have disabled storage in row, the database stores in the varray as an out-of-line LOB. If this option is not checked, storage is based on the maximum possible size of the varray rather than on the actual size of a varray column.

Chunk: The number of bytes to be allocated for LOB manipulation. If the value is not a multiple of the database block size, then the database rounds up in bytes to the next multiple. The maximum value is 32768 (32K), which is the largest Oracle Database block size allowed. The default CHUNK size is one Oracle Database block.

Tablespace: Name of the tablespace for the LOB data.

Buffer Pool: <DEFAULT> means to use the Oracle Database default. KEEP means to put blocks from the segment into the Keep buffer pool; maintaining an appropriately sized Keep buffer pool lets Oracle retain the database object in memory to avoid I/O operations. RECYCLE means to put blocks from the segment into the Recycle pool; an

Page 128: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

4-20 SQL Developer Online Help

appropriately sized Recycle pool reduces the number of objects whose default pool is the Recycle pool from taking up unnecessary cache space.

Pct Version: Specifies the maximum percentage of overall LOB storage space used for maintaining old versions of the LOB. The default value is 10, meaning that older versions of the LOB data are not overwritten until they consume 10% of the overall LOB storage space. You can specify a Pct Version value whether the database is running in manual mode (where it is the default) or automatic undo mode (where Retention is the default). You cannot specify both a Pct Version value and the Retention option.

Retention: If this option is checked, old versions of this LOB column and retained. You can specify this option only if the database is running in automatic undo mode and if you do not specify a Pct Version value.

Free Pools: Specifies the number of groups of free lists for the LOB segment, usually the number of instances in a Real Application Clusters environment or 1 for a single-instance database. You can specify this option only if the database is running in automatic undo mode. You cannot specify both a Free Pools value and the Free Lists fields.

Logging: <DEFAULT> means to use the Oracle Database default. ON means that the table creation and any subsequent direct loader (SQL*Loader) and direct-path INSERT operations against the table, partition, or LOB storage are logged in the redo log file. OFF means that these operations are not logged in the redo log file.

Free Lists - Lists: Number of free lists for each of the free list groups for the table. The default and minimum value for this parameter is 1, meaning that each free list group contains one free list.

Free Lists - List Groups: Number of groups of free lists for the table. The default and minimum value for this parameter is 1. Oracle uses the instance number of Real Application Clusters instances to map each instance to one free list group.

Extents - Initial: Size of the first extent of the table. Specify K (kilobytes) or M (megabytes) for the unit associated with the number.

Extents - Next: Size of the next extent to be allocated to the table. Specify K (kilobytes) or M (megabytes) for the unit associated with the number.

Extents - Min: Minimum number of extents allocated when the table is created.

Extents - Max: Maximum number of extents allocated when the table is created. Unlimited (if checked) means that there is no maximum (and any specified maximum is ignored).

Extents - Pct Increase: Percentage that each extent grows over the previous extent.

Partitioning paneSpecifies partitioning options for a partitioned table, which is a table that is organized into smaller and more manageable pieces called partitions. SQL queries and DML statements do not need to be modified in order to access partitioned tables; however, after partitions are defined, DDL statements can access and manipulate individuals partitions rather than entire tables or indexes. Also, partitioning is entirely transparent to applications.

Partition By: The type of partitioning: RANGE partitions the table on ranges of values from the column list (which for an index-organized tablet must be a subset of the primary key columns of the table); HASH partitions the table using the hash method (rows assigned to partitions using a hash function on values found in columns

Page 129: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

Dialog Boxes for Creating/Editing Objects 4-21

designated as the partitioning key); LIST partitions the table on lists of literal values from column (useful for controlling how individual rows map to specific partitions).

Available: Lists the columns whose values are available to be used in assigning rows to partitions.

Selected: Lists the column whose values are to be used in assigning rows to partitions.

To add a column to the partitioning definition, select it in Available Columns and click the Add (>) icon; to remove a column from the partitioning definition, select it in Selected Columns and click the Remove (<) icon. To move all columns from available to selected (or the reverse), use the Add All (>>) or Remove All (<<) icon. To move a column up or down in the partitioning definition, select it in Selected Columns and use the arrow buttons.

Subpartition By: The partitioning type to be used to create subpartitions within each range partition. Use the Available and Selected column lists select and deselect a column for subpartitioning.

Subpartition Templates paneSpecifies subpartitioning options for a partitioned table. The options depend on the subpartition type, and might include the following.

Hash Quantity: Hash subpartition quantity.

Tablespaces: Available and Selected tablespaces for storage of the data in a subpartition.

Subpartition Templates: Specifications (subpartition templates) to control the placement of rows in each subpartition. Click the Add (+) icon to add a subpartition template that is appropriate for the subpartition type.

Subpartition Details: For each subpartition template, specify a name and (if relevant) a value or set of values that is appropriate for the subpartition type.

Storage: Enables you to specify a tablespace for the subpartition.

Partition Definitions paneDefines each partition for a partitioned table. The options depend on the partition type, and might include the following.

Partitions: Specifications to control the placement of rows in each partition. Click the Add (+) icon to add a partition specification that is appropriate for the partition type.

Partition Details: For each partition specification, specify a name and (if relevant) a value or set of values that is appropriate for the subpartition type.

Storage: Enables you to specify a tablespace for the partition.

Subpartitions: Enables you to specify subpartition information.

Index Organized Properties paneSpecifies options for an index-organized table, which is a table in which the rows, both primary key column values and nonkey column values, are maintained in an index built on the primary key. Index-organized tables are best suited for primary key-based access and manipulation.

PCTTHRESHOLD: The percentage of space reserved in the index block for an index-organized table row; must be large enough to hold the primary key. All trailing columns of a row, starting with the column that causes the specified threshold to be

Page 130: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Table (with advanced options)

4-22 SQL Developer Online Help

exceeded, are stored in the overflow segment. PCTTHRESHOLD must be a value from 1 to 50; the default is 50.

Key Compression: If this option is checked, key compression is enabled, which eliminates repeated occurrence of primary key column values in index-organized tables. In the box to the right of this field, you can specify the prefix length, which is the number of prefix columns to compress. (This value can be from 1 to the number of primary key columns minus 1; the default prefix length is the number of primary key columns minus 1.)

Include Column: Column at which to divide an index-organized table row into index and overflow portions. The primary key columns are always stored in the index. The Include Column can be either the last primary key column or any non-primary-key column. All non-primary-key columns that follow the Include Column are stored in the overflow data segment.

Mapping Table: If this option is checked, SQL Developer creates a mapping of local to physical ROWIDs and store them in a heap-organized table. This mapping is needed in order to create a bitmap index on the index-organized table. If the index-organized table is partitioned, then the mapping table is also partitioned and its partitions have the same name and physical attributes as the base table partitions.

Overflow: Specifications for the overflow segment. The options are the same as for the Storage Options pane.

External Table Properties paneSpecifies options for an external table, which is a read-only table whose metadata is stored in the database but whose data in stored outside the database. Among other capabilities, external tables enable you to query data without first loading it into the database.

Access Driver: The access driver of the external table. The access driver is the API that interprets the external data for the database: ORACLE_LOADER or ORACLE_DATAPUMP. You must specify the ORACLE_DATAPUMP access driver if you specify the AS subquery clause to unload data from one Oracle database and reload it into the same database or a different Oracle database.

Access Type: Type of data to be automatically converted during loads and unloads: BLOB or CLOB.

Default Directory: A default directory object corresponding to a directory on the file system where the external data sources may reside. The default directory can also be used by the access driver to store auxiliary files such as error logs.

Project Column: Determines how the access driver validates the rows of an external table in subsequent queries. ALL processes all column values, regardless of which columns are selected, and validates only those rows with fully valid column entries. If any column value would raise an error, such as a data type conversion error, the row is rejected even if that column was not referenced in the select list. REFERENCED processes only those columns in the select list.

The ALL setting guarantees consistent result sets. The REFERENCED setting can result in different numbers of rows returned, depending on the columns referenced in subsequent queries, but is faster than the ALL setting. If a subsequent query selects all columns of the external table, then the settings behave identically.

Reject Limit: The number of conversion errors can occur during a query of the external data before an Oracle Database error is returned and the query is aborted.

Page 131: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create Trigger

Dialog Boxes for Creating/Editing Objects 4-23

Access Parameters: Values to the parameters of the specific access driver for this external table.

Location Specifications: One or more external data sources. Each is usually a file, but it need not be. Oracle Database does not interpret this clause; it is up to the access driver to interpret this information in the context of the external data. Use the Add (+) icon to add each location specification.

Comment paneOptional descriptive comment about the table.

DDL paneYou can review and save the CREATE TABLE statement that SQL Developer will use to create a new table or that reflects any changes you have made to the table properties. If you want to make any changes, go back to the relevant tabs and make the changes there.

To save the SQL statement to a script file, click Save and specify the location and file name.

When you are finished, click OK.

Related TopicsCreate Table (quick creation) (dialog box with limited features)

Database Objects

SQL Developer User Interface

Tutorial: Creating Objects for a Small Database

4.27 Create TriggerThe following information applies to a trigger, which is which is a stored PL/SQL block associated with a table, a schema, or the database, or an anonymous PL/SQL block or a call to a procedure implemented in PL/SQL or Java. The trigger is automatically executed when the specified conditions occur.

Schema: Database schema in which to create the trigger.

Name: Name of the trigger. Must be unique within the database.

Add New Source in Lowercase: If this option is checked, new text is entered in lowercase regardless of the case in which you type it. This option affects only the appearance of the code, because PL/SQL is not case sensitive in its execution.

Trigger tabTrigger Type: The type of object on which to create the trigger: TABLE, VIEW, SCHEMA, or DATABASE. (The remaining items depend on the type of trigger.)

Table Owner or View Owner: For a trigger on a table or a view, the name of the owner of the table or the view.

Table Name or View Name : For a trigger on a table or a view, the name of the table or the view.

Before or After: For a trigger on a table, select Before to cause the database to fire the trigger before executing the triggering event, or select After to cause the database to fire the trigger after executing the triggering event.

Page 132: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create Type (User-Defined)

4-24 SQL Developer Online Help

Statement Level or Row Level: For a trigger on a table, Statement Level fires the trigger once before or after the triggering statement that meets the optional trigger constraint defined in the WHEN condition; Row Level fires the trigger once for each row that is affected by the triggering statement and that meets the optional trigger constraint defined in the WHEN condition.

Insert, Update, Delete: For a trigger on a table or a view, Insert fires the trigger whenever an INSERT statement adds a row to a table or adds an element to a nested table; Update fires fire the trigger whenever an UPDATE statement changes a value in one of the columns specified in Selected Columns (or in any column if no columns are specified); Delete fires the trigger whenever a DELETE statement removes a row from the table or removes an element from a nested table.

Referencing - Old: For a trigger on a table, the correlation names in the PL/SQL block and WHEN condition of a row trigger to refer specifically to old value of the current row.

Referencing - New: For a trigger on a table, the correlation names in the PL/SQL block and WHEN condition of a row trigger to refer specifically to new value of the current row.

Available Columns: For a trigger on a table, lists the columns from which you can select for use in an Update trigger definition.

Selected Columns: For a trigger on a table, lists the columns used in an Update trigger definition.

When: For a trigger on a table, an optional trigger condition, which is a SQL condition that must be satisfied for the database to fire the trigger. This condition must contain correlation names and cannot contain a query.

Schema: For a trigger on a schema, the name of the schema on which to create the trigger.

Available Events: For a trigger on a schema or database, lists events from which you can select for use in the trigger definition.

Selected Events: For a trigger on a schema or database, lists events used in the trigger definition.

DDL tabThis tab contains a read-only display of a SQL statement that reflects the current definition of the trigger.

For more information about triggers, see Triggers: Usage Information.

Related TopicsTriggers: Usage Information

Database Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.28 Create Type (User-Defined)This dialog box is displayed when you right-click Types in the Connections navigator and select Create Type to create a user-defined type. After you complete the information in this dialog box and click OK, a SQL Worksheet is displayed in which you must specify the appropriate definition of the type.

Page 133: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit User

Dialog Boxes for Creating/Editing Objects 4-25

Schema: Database schema in which to create the type.

Name: Name of the type. Must be unique within its schema.

Type: Select the type of data type to be created: array type, object type specification, object type specification and type body, or table type.

For more information about creating a user-defined type, see the CREATE TYPE statement in Oracle Database SQL Language Reference.

For information about Oracle-supplied types, see Data Types: Usage Information.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.29 Create/Edit UserThe user dialog box is used for creating a new database user or editing an existing database user. The user properties are grouped under several tabs.

To create or edit a database user, the user associated with your database connection must have the DBA role. You should also be familiar with the main concepts and techniques documented in Oracle Database Administrator's Guide.

User tabSpecifies general properties for the database user.

User Name: The user name string. For an existing user, this field is read-only; to change the name, you must drop the user and create a new user with the desired name.

New Password: Password string for the new user, or new password for an existing user. You must also type the same password string for Confirm Password.

Password Expired: If this option is checked, the password is marked as expired, and the user must change the password before being permitted to connect to the database.

Account Locked: If this option is checked, the user will not be permitted to connect connect to the database until a DBA user unlocks the account associated with this user.

Roles tabSpecifies roles to be granted to the user. For each role, you can check Granted to grant the role, Admin to permit the user to grant the role to other users, and Default to use the default settings for Granted and Admin.

For convenience, you can click buttons to affect all settings (Grant All, Revoke All, Admin All, Admin None, Default All, Default None); then, you can specify other settings for individual roles.

System Privileges tabSpecifies privileges to be granted to the user. For each privilege, you can check Granted to grant the privilege, and Admin Option to permit the user to grant the privilege to other users.

Page 134: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit User Defined Report

4-26 SQL Developer Online Help

For convenience, you can click buttons to affect all settings (Grant All, Revoke All, Admin All, Admin None); then, you can specify other settings for individual privileges.

Quotas tabSpecifies disk usage limits on specified tablespaces for the user. If you check Unlimited, there is no disk usage limit on the tablespace.

SQL tabDisplays the SQL statements that SQL Developer will use to create (after executing a CREATE USER statement) a new user or to edit an existing user. This display is read-only; if you want to make any changes, go back to the relevant tabs and make the changes there.

Related TopicsDatabase Objects

SQL Developer User Interface

4.30 Create/Edit User Defined ReportThe following information applies to a user-defined report. For information about how to create a user-defined report, as well as examples of creating such reports, see Section 1.10.11, "User Defined reports".

Details tabName: Name of the user-defined report.

Style: Report style: Table (default), Code (formats the code in the output), Chart (bar or pie chart; see Section 1.10.11.1, "User-Defined Report Example: Chart" for an example), plsql-dbms_output (dynamic HTML; see Section 1.10.11.2, "User-Defined Report Example: Dynamic HTML" for an example), or Script (executable script).

Description: Optional description of the report.

ToolTip: Optional tooltip text to be displayed when the mouse pointer stays briefly over the report name in the Reports navigator display.

SQL Statement: The complete SQL statement for retrieving the information to be displayed in the user-defined report. As a trivial example, the statement SELECT user "Current User" FROM DUAL; displays Current User as the heading and the name of the user associated with the current database connection.

Suggestion: Look at the SQL statements for various SQL Developer-supplied reports; check the Messages - Log pane below the report results, or click the SQL icon under the Report Results tab.

Add Child: Add a child report (subreport) of this report.

Test: Tests the report definition by running it in a separate window. This feature enables you to test the report before creating it.

Columns tabName: Name of the column.

Format: Format of the column.

hAlign: Horizontal alignment: Left or Right

Page 135: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit User Defined Report Folder

Dialog Boxes for Creating/Editing Objects 4-27

vAlign: Vertical alignment: Bottom, Center, or Top

Add Column: Adds a new column.

Remove column: Removes the selected column.

Binds tabName: Name of the bind variable.

Prompt: String displayed when the user is prompted to enter a value. Example: Table name

Default: Default value if the user does not enter a value at the prompt. To accept the Oracle SQL value, specify NULL_VALUE.

ToolTip: Optional tooltip text to be displayed when the mouse pointer stays briefly over the bind variable name.

Chart Details tabAvailable if the report type is Chart.

Chart Type: Bar chart with horizontal or vertical bars, or pie chart.

3D Graph: True for a three-dimensional appearance; False for a two-dimensional appearance.

Gradient Effect: True for a gradient effect; False for no gradient effect.

Chart Style: Thematic name for the overall appearance of the chart.

Show Grid: True to show the grid lines; False to hide the grid lines.

Show Legend: True to show the chart legend; False to hide the chart legend.

Related TopicsReports

User Defined reports

4.31 Create/Edit User Defined Report FolderThe following information applies to a folder for organizing user-defined reports. Each folder can contain reports and other folders (subfolders). For example, you can create a folder named Sales, and then under that folder create folders named Sales by District and Sales by Product.

For information about how to create user-defined reports and folders for these reports, see Section 1.10.11, "User Defined reports".

Name: Name of the folder.

Description: Optional description of the folder.

ToolTip: Optional tooltip text to be displayed when the mouse pointer stays briefly over the folder name in the Reports navigator display.

Related TopicsReports

User Defined reports

Page 136: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit View

4-28 SQL Developer Online Help

4.32 Create/Edit ViewThe view dialog box is used for creating or editing a view or materialized view. You can use the SQL Query tab or a series of panes to specify the query part of the view definition, and you can use one or more other panes (depending on the type of view) for other parts of the definition.

If you click OK before you are finished creating or editing the view, right-click the view name in the Connections navigator, select Edit, and continue creating or editing the view.

Schema: Database schema in which to create the view.

Name: Name of the view. Must be unique within a schema.

Advanced: If this option is checked, the dialog box changes to include a pane that provides an extended set of features for creating the view.

SQL Query tab or paneAs a tab (if you did not check the Advanced box), it contains the SQL code for the query part of the view definition, using the SELECT and FROM keywords and usually a WHERE clause with whatever syntax is needed to retrieve the desired information.

As a pane (if you checked the Advanced box), it presents options for building specific parts of the query.

For example, the following query, from the Creating a View tutorial topic, selects columns from the PATRONS and TRANSACTIONS tables, ordering them first by values in the PATRON_ID column in the PATRONS table and then by values in the TRANSACTION_TYPE column in the TRANSACTIONS table. The result is a listing by patron ID of all patrons who had transactions, and for each listed patron the transaction information listed by transaction type

CREATE VIEW patrons_trans_view AS SELECT p.patron_id, p.last_name, p.first_name, t.transaction_type, t.transaction_date FROM patrons p, transactions t WHERE p.patron_id = t.patron_id ORDER BY p.patron_id, t.transaction_type;SQL Parse Results: If you click Test Syntax, displays any SQL syntax errors, or displays a message indicating no errors if there are no syntax errors.

Revert: Cancels any edits you have made in the Entire SQL Query box, and displays the contents of the box before these edits.

Test Syntax: Checks the statement in the Entire SQL Query box for any SQL syntax errors.

Quick-Pick Objects paneSpecifies objects that you can use in the SELECT, FROM, and WHERE clauses of the view definition. Identify the tables and views on which this view is based, and the columns in those tables and views that are used in the definition of this view. To see the results of your quick-pick specification, either check Auto-Query or click Query.

Schema: Database schema containing the objects to be selected.

Type Filter - Filter Types: Enables you to limit the display of objects available for selection to certain types of database objects (for example, to show only tables or views).

Page 137: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit View

Dialog Boxes for Creating/Editing Objects 4-29

Name Filter: Enables you to limit the display of objects available for selection according to a character string in the name, with the percent sign (%) as a wildcard character. For example, to limit the display of available tables and views to those whose names start with the string EM, specify the following name filter: EM%

Auto-Query: If this option is enabled, the display of available objects is automatically refreshed when you specify or change the Type Filter or Name Filter value.

Query: Refreshes the display of available objects based on the Type Filter and Name Filter values.

Available: Lists the objects (typically, tables and views in a hierarchical display) from which you can select objects to use in the SELECT, FROM, and WHERE clauses of the view definition.

Selected: Lists the objects (typically, columns) that you can use in the SELECT, FROM, and WHERE clauses of the view definition.

To add an object as selected, select it in Available and click the Add (>) icon; to remove an object as selected, select it in Selected and click the Remove (<) icon. To move all objects from selected to available, use the Remove All (<<) icon. To move an object up or down in the selected list, select it in Selected and use the arrow buttons.

For the example in DDL tab or pane, select the DEPTNO and SAL columns from the EMP table.

FROM Clause paneSpecifies the tables and views that you can use in the FROM clause of the view definition.

Available: Lists the tables and views that are available to be selected for use in the FROM clause of the view definition.

Selected: Lists the tables and views that you can use in the FROM clause of the view definition.

To add an object as selected, select it in Available and click the Add (>) icon; to remove an object as selected, select it in Selected and click the Remove (<) icon. To move all objects from available to selected, use the Add All (<<) icon; to move all objects from selected to available, use the Remove All (<<) icon.

Alias: Alias for the table or view.

For the example in DDL tab or pane, select the EMP table.

SELECT Clause paneSpecifies objects that you can use in the SELECT clause of the view definition.

SELECT List: Lists the objects (typically, columns) that you can currently use in the SELECT clause. To add an object, click the Add (+) icon; to delete an object, select it and click the Delete (X) icon; to move an object up or down in the view definition, select it and use the up-arrow and down-arrow buttons.

Expression: Column name or an expression. For expressions, you can type them, or you can use the Expression Palette to add object names and function names.

Validate: Checks the validity of the Expression entry.

Note: After you add an object, to add another object, click the Add (+) icon.

Page 138: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit View

4-30 SQL Developer Online Help

For the example in DDL tab or pane, select DEPTNO column and the MIN(emp.sal) and MAX(emp.sal) functions.

WHERE Clause paneSpecifies the WHERE clause of the view definition.

WHERE: The text of the WHERE clause, without the WHERE keyword. You can type the text completely; or you can type some of the text and use the Expression Palette to add object names, function names, and operators.

Example (from the Creating a View tutorial exercise): p.patron_id = t.patron_id

GROUP BY Clause paneSpecifies a clause to be used to group the selected rows based on the value of columns for each row and return a single row of summary information for each group. The GROUP BY clause groups rows but does not guarantee the order of the result set; to order the groupings, use the ORDER BY clause.

Available: Lists the tables and views, and the columns in each, that are available to be selected for use in the GROUP BY clause of the view definition.

Selected: Lists the tables and views, and the columns in each, that you can use in the GROUP BY clause of the view definition.

To add an object as selected, select it in Available and click the Add (>) icon; to remove an object as selected, select it in Selected and click the Remove (<) icon. To move all objects from available to selected, use the Add All (<<) icon; to move all objects from selected to available, use the Remove All (<<) icon.

HAVING Clause paneSpecifies an expression that must be satisfied for rows to be processed by the GROUP BY clause. For example, HAVING MIN(salary) < 30000 causes the GROUP BY clause to consider only rows where the minimum value of the relevant salary values is less than 30000.

HAVING: You can type the complete expression text, or you can use the Expression Palette to add object names, function names, and operators to the expression text.

ORDER BY Clause paneSpecifies one or more columns or column expressions whose values will be used to sort the results returned by the view. Without an ORDER BY clause, no guarantee exists that the same query executed more than once will retrieve rows in the same order.

ORDER BY List: Lists the objects (typically, columns) that you can currently use in the ORDER BY clause. To add an object, click the Add (+) icon; to delete an object, select it and click the Delete (X) icon; to move an object up or down in the view definition, select it and use the up-arrow and down-arrow buttons.

ORDER BY Expression Filter: For each column or column expression, you can type the text completely into the Expression box; or you can type some of the text and use the Expression Palette to add object names, function names, and operators.

Note: After you add an object, to add another object, click the Add (+) icon.

Page 139: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit View

Dialog Boxes for Creating/Editing Objects 4-31

Validate: Tests the validity of the syntax for the expression.

Order: ASC for ascending (expression values sorted in ascending order); DESC for descending (expression values sorted in descending order).

Nulls Ordering: NULLS FIRST to have null expression values appear before non-null values; NULLS LAST to have null expression values appear after non-null values. ("Before" and "after" positions are determined by the Order value.)

View Information or Materialized View Properties paneOptions for a standard view:

Restrict Query: If this option is checked, you can enable one of the following options

■ Read Only: Prevents the view from being used to add, delete, or change data in the underlying table or tables.

■ Check Option: If this option is checked, it prohibits any changes to the underlying table or tables that would produce rows that are not included in this view.

Force on create: If this option is checked, the view is created even if it has errors in its definition. This option is useful if you want to create the view regardless of any errors, and go back and correct the errors later. If this option is not checked, the view is not created is its definition contains any errors.

Options for a materialized view:

Refresh Options:

Method: The method of refresh operation to be performed:

■ Complete Refresh: Executes the defining query of the materialized view, even if a fast refresh is possible.

■ Fast Refresh: Uses the incremental refresh method, which performs the refresh according to the changes that have occurred to the master tables. The changes for conventional DML changes are stored in the materialized view log associated with the master table.The changes for direct-path INSERT operations are stored in the direct loader log.

■ Force Refresh: Performs a fast refresh if one is possible; otherwise, performs a complete refresh.

■ Never: Do not perform refresh operations.

When: The type of refresh operation to be performed:

■ On Demand: Performs a refresh when one of the DBMS_MVIEW refresh procedures is called.

■ On Commit: Performs a fast refresh whenever the database commits a transaction that operates on a master table of the materialized view. This may increase the time taken to complete the commit, because the database performs the refresh operation as part of the commit process.

■ Specify: Performs refresh operations according to what you specify in the Start on and Next fields.

■ Never: Does not perform a refresh operation.

Type: Refresh type, which determines the type of materialized view:

■ Primary Key: Creates a primary key materialized view, which allows materialized view master tables to be reorganized without affecting the eligibility of the materialized view for fast refresh.

Page 140: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit View

4-32 SQL Developer Online Help

■ Row ID: Creates a rowid materialized view, which is useful if the materialized view does not include all primary key columns of the master tables.

Start on: Starting date and time for the first automatic refresh operation. Must be in the future.

Next: Time for the next automatic refresh operation. The interval between the Start on and Next times establishes the interval for subsequent automatic refresh operations. If you do not specify a value, the refresh operation is performed only once at the time specified for Start on.

Constraints: If this option is checked, more rewrite alternatives can be used during the refresh operation, resulting in more efficient refresh execution. The behavior of this option is affected by whether you select Enforced or Trusted.

Enforced: Causes only enforced constraints to be used during the refresh operation.

Trusted: Enables the use of dimension and constraint information that has been declared trustworthy by the database administrator but that has not been validated by the database. If the dimension and constraint information is valid, performance may improve. However, if this information is invalid, then the refresh procedure may corrupt the materialized view even though it returns a success status.

Materialized View Options:

Parallel: If this option is checked, parallel operations will be supported for the materialized view, and you can specify a number for the default degree of parallelism for queries and DML on the materialized view after creation.

Enable Cache: If this option is checked, the blocks retrieved for this table are placed at the most recently used end of the least recently used (LRU) list in the buffer cache when a full table scan is performed. This setting is useful for small lookup tables. If this option is not checked, the blocks are placed at the least recently used end of the LRU list.

Build Type: Specifies when to populate the materialized view. Immediate indicates that the materialized view is to be populated immediately. Deferred indicates that the materialized view is to be populated by the next refresh operation. If you specify Deferred, the first (deferred) refresh must always be a complete refresh; until then, the materialized view has a staleness value of unusable, so it cannot be used for query rewrite.

Enable Query Rewrite: If this option is checked, the materialized view is enabled for query rewrite, an optimization technique that transforms a user request written in terms of master tables into a semantically equivalent request that includes one or more materialized views.

Prebuilt Option: If this option is checked, an existing table is registered as a preinitialized materialized view. This option is particularly useful for registering large materialized views in a data warehousing environment. The table must have the same name and be in the same schema as the resulting materialized view, and the table should reflect the materialization of a subquery. Reduced Precision authorizes the loss of precision that will result if the precision of the table or materialized view columns do not exactly match the precision returned by subquery. No Reduced Precision requires that the precision of the table or materialized view columns match exactly the precision returned by subquery, or the create operation will fail.

Index Storage Options:

Use Index: If this option is checked, a default index is created and used to speed up incremental (fast) refresh of the materialized view. If this option is not checked, this

Page 141: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

DDL Panel for Creating or Editing an Object

Dialog Boxes for Creating/Editing Objects 4-33

default index is not created. (For example, you might choose to suppress the index creation now and to create such an index explicitly later.)

Use Tablespace: If this option is checked, you can specify the tablespace in which the materialized view is to be created. If this option is not checked, the materialized view is created in the default tablespace of the schema containing the materialized view.

DDL tab or paneIf you are editing an existing view or if you have only partially created a view, this tab contains a read-only display of a SQL statement that reflects the current definition of the view.

To save the SQL statement to a script file, click Save and specify the location and file name.

Related TopicsDatabase Objects

SQL Developer User Interface

Dialog Boxes for Creating/Editing Objects

4.33 Create XML SchemaThis dialog box enables you to specify the URL of an XML schema that can be associated with XML document instances.

Schema: Name of the schema in which to create the XML schema object.

Name: URL of the XML schema.

4.34 Configure File Type AssociationsThis dialog box, which is displayed the first time you start SQL Developer, enables you to associate certain file types with SQL Developer. If a file type is associated with SQL Developer, files with that type’s extension will automatically be opened by SQL Developer when you double-click the file name. Any previous association for that file type is replaced.

If you do not associate a file type with SQL Developer, any existing association for that file is unchanged.

After you close this box, you can change the associations for these file types and many others by clicking Tools and then Preferences, and selecting File Types (see Section 1.11.8, "File Types").

4.35 DDL Panel for Creating or Editing an ObjectYou can review and save the SQL statement that SQL Developer will use to create or edit the object, to reflect any changes you have made to the object’s properties. If you want to make any changes, go back to the relevant panels and make the changes there.

To save the SQL statement to a script file, click Save and specify the location and file name.

Page 142: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Debugger - Attach to JPDA

4-34 SQL Developer Online Help

4.36 Debugger - Attach to JPDAThis dialog box is displayed when you right-click a database connection name and select Remote Debug. Use this dialog box if you are using the Sun Microsystem's Java Platform Debugger Architecture (JPDA) and you would like the debugger to listen so that a debuggee can attach to the debugger. For more information about remote debugging, see Section 1.5.1, "Remote Debugging".

Host: Name or IP address of the remote host on which SQL Developer should listen for the database to connect.

Port: Listening port number on the remote host. You can choose any valid port number that is not in use by another process.

Timeout: The number of seconds that SQL Developer will wait for the remote database to make a debugging connection.

Don’t Show Dialog Box Before Connecting: If this option is checked, this dialog box will not be displayed before future connections for remote debugging.

4.37 Describe Object WindowThis window is displayed when you select a database object name in the SQL Worksheet, right-click, and select Describe. The information is read-only, and is displayed using tabs that are appropriate for the type of object.

For example, if the display is for a table, the information displayed is similar to that in the Create/Edit Table (with advanced options) dialog box.

4.38 Edit Value (Table Column Data)This dialog box enables you to edit data in a cell in the table Data grid (that is, edit the value of a single column within a row). You can change the data value and then click OK.

The specific options available depend on the data type of the column associated with that cell in the grid.

If you are not permitted to modify the data, the Value display is read-only.

4.39 Enter Bind ValuesThis dialog box enables you to enter values for each bind variable. If the NULL option is checked, you cannot enter a value in this dialog box. (The NULL option is checked by default.)

4.40 Export (Database Objects and Data)This dialog box is displayed when you click Tools and then Export DDL (and Data). For a selected database connection, you can export some or all objects of one or more types of database objects to a file containing SQL data definition language (DDL) statements to create these objects. To specify options for the export operation, use the Export tab. To specify the objects or types of objects to export, use the Filter Objects tab.

File: Specify the name of the file to contain the DDL statements for creating the objects to be exported (for example, my_tables.sql). You can click Browse to select a

Page 143: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Export (Database Objects and Data)

Dialog Boxes for Creating/Editing Objects 4-35

directory for this file. (The default file path for export operations is specified in the SQL Developer user preferences for Database.)

Connection: Select the database connection with the objects to be exported.

Export tabSpecify object types to be exported and options for the export operation.

Objects: Check the types of objects that you want to export. You can click Export Object Types to check and uncheck all individual types. You must select at least one object type. Note also the following:

■ Dependencies (under Tables): If this option is checked, constraints for each table are defined as inline constraints in the CREATE TABLE statement; and if any comments, indexes, or triggers exist for a table, they are also included in the CREATE TABLE statement.

■ Constraints: If this option is checked, any constraints for each table are defined in separate ALTER TABLE statements instead of in the CREATE TABLE statement.

■ Data: If this option is checked, statements are included to insert the data for an exported table or view. If this option is not checked, statements are not included to insert the data for an exported table or view; that is, only the DDL statements are included. If you check Data, statements are included to insert all data in all tables in the selected schema, unless you use the Filter Data tab to limit the data to be migrated.

Show Schema: If this option is checked, the schema name is included in CREATE statements. If this option is not checked, the schema name is not included in CREATE statements, which is convenient if you want to re-create the exported objects under a schema that has a different name.

Storage: If this option is checked, any STORAGE clauses in definitions of the database objects are preserved in the exported DDL statements. If you do not want to use the current storage definitions (for example, if you will re-create the objects in a different system environment), uncheck this option.

Terminator: If this option is checked, a line terminator character is inserted at the end of each line.

Pretty Print: If this option is checked, the statements are attractively formatted in the output file, and the size of the file will be larger than it would otherwise be.

Include BYTE Keyword: If this option is checked, column length specifications refer to bytes; if this option is not checked, column length specifications refer to characters.

Add Force to Views: If this option is checked, the FORCE option is added to any CREATE VIEW statements, causing each view to be created even if it contains errors.

Include Drop Statement: If this option is checked, a DROP statements is included before each CREATE statement, to delete any existing objects with the same names. However, you may want to uncheck this option, and create a separate drop script that can be run to remove an older version of your objects before creation. This avoids the chance of accidentally removing an object you did not intend to drop.

Filter Objects tabYou limit the types or objects, and the objects within selected types, for the export operation.

Object Type: Select All for all object types, or a specific type of object.

Page 144: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Export: Advanced Data Filter

4-36 SQL Developer Online Help

Go: Click Go to display a list of objects that meet the selection criteria for the selected connection. Use the arrow keys to move selected objects or all objects from the available objects box to the selected objects box.

Filter Data tabYou limit the data for the export operation.

Go: Click Go to display a list of available tables, and use the arrow keys to move selected tables or all tables from the available box to the selected box.

Then, select a table, enter the filter text (a WHERE clause without the WHERE keyword), and click Apply Filter.

4.41 Export: Advanced Data FilterThis dialog box is displayed when you click Advanced in the Export (Database Objects and Data) dialog box.

Schema: Select the name of the schema to see the available objects on which you can specify a filter.

Filter: A WHERE clause specifying the condition or conditions for filtering data from the selected object.

Apply Filter: Click to apply the specified filter.

When you are finished applying any filters, click Apply.

4.42 Export ErrorThis dialog box is displayed when you tried to export some or all objects of one or more types of database objects to a file containing SQL statements, but did not include some essential information, which might include one or more of the following:

■ The database connection. For Connection, select the database connection from which the objects will be exported.

■ The name of the output file. Look at the Options tab, and be sure that you specified a file.

■ One or more objects or types of objects. Look at the Objects tab, and be sure that you selected (checked) at least one object or type of object.

4.43 Export Table DataThis dialog box is displayed when you right-click a table name, a table data display, a SQL Worksheet result set, or report output, and select Export and then an export format. You can export some or all of the data to a file or to the system clipboard. To restrict the output to specified columns, use the Columns tab. To restrict the output based on a WHERE clause condition, use the Where tab.

Format tabFormat: Determines the format of entries written in the specified output file: Insert for SQL INSERT statements, XML for XML tags and data, SQL LOADER for a SQL*Loader control file, or CSV for comma-separated values including a header row for column identifiers.

Page 145: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit External Tool

Dialog Boxes for Creating/Editing Objects 4-37

Output: File writes the output to a file that you specify; Clipboard places the output on the system clipboard, so that you can paste it into a file, a command line, or other location appropriate for the format.

File: If the output is to a file, click Browse to select the directory or folder and to specify the file name and extension. The file path is then placed in the File box. (The default file path for export operations is specified in the SQL Developer user preferences for Database.) Standard file extensions are .sql for Insert format, .xml for XML format, .ctl for SQL LOADER format, and .csv for CSV format.

Columns tabYou can specify whether the output should include data from all columns or just from the checked columns.

Where tabYou can restrict the output by entering a valid WHERE clause for a query on the table, without the WHERE keyword. For example, to restrict the exported data to rows where a column named RATING contains a value greater than 5, specify: rating > 5

4.44 External ToolsThis dialog box is displayed when you click Tools and then External Tools. It displays information about user-defined external tools that are integrated with the SQL Developer interface.

Find Tools: Checks for any tools that Oracle offers for your consideration, and adds them to the list if they are not already included.

New: Starts a wizard for defining a new external tool (see Section 4.45, "Create/Edit External Tool").

Edit: Displays a dialog box for editing the selected external tool (see Section 4.45, "Create/Edit External Tool").

4.45 Create/Edit External ToolThis interface is displayed as a wizard if you are creating a new external tool, and as a dialog box if you are editing an existing external tool (see Section 4.44, "External Tools").

External Program OptionsProgram Executable: Path of the program executable for the tool.

Arguments: Arguments (parameters) to be passed to the program. You can click Insert to insert a macro for the argument (see Section 4.48, "Insert Macro").

Run Directory: Directory in which to run the program. You can click Insert to insert a macro for the directory (see Section 4.48, "Insert Macro").

Command Sample: A read-only sample display of the command to run the program.

Display OptionsSpecify how the external tool should appear when displayed in menu or toolbar items.

Caption for Menu Items: The text string that will appear for any menu item that calls the external tool. To indicate the mnemonic character, use the ampersand before the

Page 146: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create Offline Database Capture Scripts

4-38 SQL Developer Online Help

character. For example: &Mytool for the "M" to be underlined and used as the mnemonic

ToolTip Text: Text for the tooltip to be displayed when the mouse pointer hovers over the icon for the tool in a toolbar.

Icon Location: File path of the icon associated with the tool. Click Browse to specify a graphics file, or Use Default to use the default icon (if you previously specified a nondefault icon).

Preview: A read-only display of the menu item and its associated icon.

Integration OptionsSpecify how the external tool will be integrated with SQL Developer.

Add Items to Menus: Check any menus on which you want to include an item for this tool.

Add Buttons to Toolbars: To add the icon for this tool to the SQL Developer main toolbar, check Main Toolbar.

After Tool Exits: To have SQL Developer reload any open files after the tool exits, check Reload Open Files.

Availability OptionsSpecify when the external tool is enabled. In contexts where the tool is not enabled, its menu item and icon are grayed out.

Always: Makes the tool always available.

When a File is Selected or Open in the Editor: Makes the tool available only when a file is selected or open, such as when the SQL Worksheet is open.

When Specific File Types are Selected: Makes the tool available only when files of the specified type or types are selected. Use the arrow buttons to move desired types from Available Types to Selected Types.

4.46 Create Offline Database Capture ScriptsThis dialog box is displayed when you click Migration, then MySQL and SQL Server Offline Capture, then Create Database Capture Scripts. It specifies options for creating an offline capture properties (.ocp) file, which you can later load and run by clicking Migration, then MySQL and SQL Server Offline Capture, then Load Database Capture Script Output.

Output Directory: Converted model containing tables whose data is to be moved to the corresponding Oracle database tables.

Generate for: Windows Batch File generates a .bat file to be run on Windows systems; Linux Shell Scripts generates .sh files to be run on Linux systems.

For a MySQL migrations, if you generate .sh files, you must also execute the following command to make the .sh files executable and the .ocp file writable:

chmod 755 *

Platform: The MySQL or Microsoft SQL Server version for which to generate the scripts.

Page 147: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Filter Object Types

Dialog Boxes for Creating/Editing Objects 4-39

Related TopicsMigrating Third-Party Databases

4.47 FilterThis dialog box is displayed when you right-click an object type node (such as Tables) in the Connections navigator and select Apply Filter. Use this box to limit the number of objects of that type that are displayed, according to one or more filter criteria that you specify. For each criterion, specify the following:

■ Criterion name (for example, OBJECT_NAME for a table)

■ Operator (for example, LIKE)

■ Value for comparison (for example EM%)

■ Case Sensitive option for character data comparison

For example, to display only tables with names that start with EM, specify: OBJECT_NAME LIKE EM% (with the percent sign as a wildcard character)

To add another filter criterion, click the Add (+) icon; to delete a criterion, select it and click the Delete (X) icon; to move a criterion up or down in the list, select it and use the arrow icons.

To apply the filter criteria to the Connections navigator display, click OK.

To remove the effects of applying a filter, right-click the object type node in the Connections navigator display and select Clear Filter.

4.48 Insert MacroThis dialog box is displayed when you click Insert when specifying external program options (see Section 4.45, "Create/Edit External Tool"). It enables you to insert a sample text string into the relevant field for the external program option; you can then edit that string to suit your needs. (This is somewhat analogous to using snippets to insert text strings into the SQL Worksheet.)

Select the desired type of macro, read its description to ensure that it is what you want, and click OK. For some macros, a sample expansion is included.

4.49 Externally Modified FilesThis dialog box filters is displayed when an external application has modified a file that you have open in SQL Developer. You are asked if you want to reload the externally modified file.

If you click Yes, the externally modified file overwrites any changes that you might have made in SQL Developer. If you click No, the externally modified file will be overwritten by your version when you save the file in SQL Developer.

4.50 Filter Object TypesThis dialog box filters (restricts) the types of objects to be displayed for the schema associated with the selected user.

Available Object Types: Lists the types of objects that are available to be added to the display.

Displayed Object Types: Lists the types of objects that are included in the display.

Page 148: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Filter Schemas

4-40 SQL Developer Online Help

To add a type of object to the display, select it in Available Object Types and click the Add (>) icon; to remove a type of object from the display, select it in Displayed Object Types and click the Remove (<) icon. To move all types of objects from available to displayed (or the reverse), use the Add All (>>) or Remove All (<<) icon.

4.51 Filter SchemasThis dialog box enables you to restrict the schemas that are displayed under Other Users in the Connections navigator.

Available Schemas: Lists the schemas that are not currently displayed under Other Users in the Connections navigator, but that are available to be added to the list of displayed users.

Displayed Schemas: Lists the schemas that are to be included in the display under Other Users in the Connections navigator.

To add a schema to the display, select it in Available Schemas and click the Add (>) icon; to remove a schema from the display, select it in Displayed Schemas and click the Remove (<) icon. To move all schemas from available to displayed (or the reverse), use the Add All (>>) or Remove All (<<) icon.

Only display schemas with visible objects: Limits the display to available schemas that have any database objects that are visible to the database user associated with the current connection.

4.52 Filter ErrorThis dialog box is displayed if you did not specify any data for an export operation. Be sure to specify Filter Data options that select some data for the export operation.

4.53 Find/Replace TextThis dialog box specifies a text string to find, optionally a replacement text string, and search options.

Text to Search For: Text string to search for.

Replace With: If you check this option, enter a text string to replace the text string that is being searched for.

Options: Options to control the search behavior: Match Case makes the search case sensitive; Search from Beginning starts the search at the beginning instead of at the text cursor; Highlight All Occurrences highlights all occurrences of the search string instead of just the first one; Wrap Around searches across line breaks; Whole Word Only find the search string only if it is a complete word and not just part of a word; Regular Expressions means that the search string is a regular expression; Selected Text Only means to search only in the text block that you have selected.

Direction: Forward starts the search from the cursor in the direction of normal text flow; Backward starts the search from the cursor in the opposite direction of normal text flow.

4.54 Generate Oracle DDLThis dialog box is displayed when you click Migration, then Script Generation, then Generate Oracle DDL It specifies the converted model for which to generate Oracle DDL (data definition language) statements. The operation produces a SQL*Plus script

Page 149: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Modify Access Database

Dialog Boxes for Creating/Editing Objects 4-41

file that you use for offline generation: that is, you can run the script to create the appropriate objects in the Oracle database.

When the operation is in progress, a box displays object types and the number of objects of each type for which DDL statements are being generated.

After the operation finishes, a box displays the directory in which two files have been created: a .sql file containing DDL statements (such as CREATE TABLE and CREATE OR REPLACE VIEW) that create the migrated schema objects in the Oracle database, and a .ctl file containing the SQL*Plus @ statement to invoke the .sql file.

Converted Objects: Converted model containing objects for which to generate Oracle DDL statements.

Related TopicsMigrating Third-Party Databases

4.55 Generate Offline Data Move FilesThis dialog box is displayed when you click Migration, then Script Generation, then Generate Data Move Scripts. It specifies the converted model and the destination directory if you are performing offline data migration, which is explained in Section 2.9.1.

Converted Model: Converted model containing tables whose data is to be moved to the corresponding Oracle database tables.

Directory: Path in which to create files containing the data and the SQL*Loader specifications.

Related TopicsMigrating Third-Party Databases

4.56 Go to Line NumberUse this box to specify the line number to go to in the selected function or procedure. After you enter the line number and click OK, that line is highlighted.

4.57 Go to Line Number: ErrorThis error box tells you that you entered an invalid line number in the Go to Line Number box, probably because you entered a line number greater than that of the last line in the function or procedure.

4.58 Load Preset Key MappingsThis dialog box is displayed when you click Load Preset when specifying accelerator key preferences for SQL Developer. You can load a set of predefined key mappings for certain systems and external editing applications. If you load any preset key mappings that conflict with changes that you have made, your changes are overwritten.

4.59 Modify Access DatabaseThis dialog box is displayed if you click Migration, then Modify Microsoft Access MDB. It enables you to create link tables in the Microsoft Access database, so that

Page 150: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Modify Value

4-42 SQL Developer Online Help

when you use the Microsoft Access database after the migration to view and modify table data, you are actually viewing and modifying data in the Oracle Database tables with which the Microsoft Access tables are linked.

Access Connection: Name of the connection to the Microsoft Access database in which to create the link tables.

Oracle Connection: Name of the Oracle connection to us in creating the Oracle Database tables associated with the Microsoft Access link tables.

Converted Model: Name of the converted model to use.

Remove Local Tables from Access Database: If this option is checked, the original tables are removed from the Microsoft Access database after the link tables are created. Specify this option if you want to use the Microsoft Access database only with the associated Oracle Database tables.

Oracle DSN: Connection information for the Oracle Database.

4.60 Modify ValueThis dialog box is displayed when you right-click a variable in the Data or Smart Data pane during debugging and select Modify Value. You can modify the value for the selected data item (primitive value, string, or reference pointer) during debugging. Note: You cannot undo the action after you click OK, so be careful when making any changes.

Current Value: The value of the data item.

New Value: The new value for the data item (enter or select from a drop-down list).

■ For a primitive value, you can enter a new value.

■ For a reference pointer, you can enter the memory address of an existing object or array. To set a reference pointer to null, enter 0 as a memory address.

■ For a string, you can enter either a new string value or the memory address of an existing string.

Interpret New Value as Object Address: If this option is checked, the New Value entry is interpreted as a memory address pointer to an object or array in the heap of the program you are debugging. For a string, this box must be checked check if the value you enter in the New Value field is the memory address of an existing string

Related TopicsRunning and Debugging Functions and Procedures

Debugging a PL/SQL Procedure (tutorial)

4.61 Data Move DetailsThis dialog box is displayed when you click Migration, then Migrate Data. It specifies the source and target information for online data migration, which is explained in Section 2.9.

Source Connection: Database connection from which data is to be migrated.

Target Connection: Database connection to which data is to be migrated.

Converted Model: Converted model containing tables whose data is to be moved to the corresponding Oracle database tables.

Page 151: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Query Builder

Dialog Boxes for Creating/Editing Objects 4-43

Use qualified names from converted model for insert: If this option is checked,

Related TopicsMigrating Third-Party Databases

4.62 No Object FoundThis dialog box is displayed if no objects could be found to satisfy the requested operation, such as trying to perform a "Describe" operation when the currently selected object is not valid for a SQL*Plus DESCRIBE statement.

4.63 Open FileThis is a standard box for selecting a file to open: use Location to navigate to (double-clicking) the folder with the file to open, then click the file to select it.

4.64 Oracle-Only ReportThis dialog box is displayed if you select a non-Oracle (third-party) database connection for a report that applies only to Oracle database connections. Be sure to select an Oracle connection.

4.65 Query BuilderThe Query Builder box is displayed when you right-click in the SQL Worksheet and select Query Builder. You can use this box to create a SELECT statement by dragging and dropping table and view names and by graphically specifying columns and other elements of the query. When you finish building the query, the resulting SELECT statement is inserted into the SQL Worksheet.

The Query Builder capabilities are grouped under the following tabs.

Select ColumnsUse the Select Columns tab to select tables and views, then columns within them, to be used in the query. Use the connections tree on the left to find the desired tables and views under the appropriate schema or schemas, and double-click each desired table and view.

Within each selected table or view, click to select the desired columns (all or specific ones) to include in the query.

Create Where ClauseUse the Create Where Clause tab to select, for each column in the WHERE clause, the column name, operator, and value. For example, you might want to select only rows where AUTHOR_LAST_NAME contains Melville or where RATING > 5.

Show SQLUse the Show SQL tab to see a read-only display of the query reflecting what you have specified so far.

View ResultsUse the View tab to test the query in its current form. Click the Execute Statement icon to execute the query.

Page 152: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Recent Files

4-44 SQL Developer Online Help

Refresh: Specifies the refresh interval: the number of seconds between each time the query is automatically re-executed and the results display is updated. A value of zero (0) means that the query is not automatically re-executed after the initial execution.

Related TopicsUsing the SQL Worksheet

4.66 Recent FilesThis dialog box displays files recently opened in SQL Developer.

Files: A list of files opened in SQL Developer, with the most recent file first. The Show All option determines whether the list includes only files opened implicitly or files opened implicitly or explicitly.

Show All: If this option is checked, the list includes both explicitly and implicitly opened files; if this option is not checked, the list includes only implicitly opened files. Explicitly opened files are those that you opened directly; implicitly opened files are those that SQL Developer opened to support your work (for example, while you were debugging).

4.67 Create RepositoryThis dialog box is displayed if you click Migration, then Repository Management, then Create Repository.

Create Repository: Name of the database connection to use to create a migration repository. The objects associated with the migration repository are created in the schema of the user associated with the selected connection.

4.68 Delete or Truncate RepositoryThe Delete Repository dialog box is displayed if you click Migration, then Repository Management, then Delete Repository; the Truncate Repository dialog box is displayed if you click Migration, then Repository Management, then Truncate Repository.

Deleting a repository removes all schema objects that are used for the migration repository. Truncating a repository deletes all data from schema objects that are used for the migration repository, but does not delete the schema objects themselves, effectively leaving you with an empty repository.

Repository: Name of the database connection in which to delete or truncate the migration repository.

4.69 Capture Microsoft Access Exporter XMLThis dialog box is displayed if you click Migration, then Capture Exporter XML.

File Path: File path to the .xml file that was produced when you ran the appropriate version of the exporter tool for Microsoft Access (when you clicked Migrations, then Microsoft Access Exporter, then the appropriate version for your version of Microsoft Access).

Page 153: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Run/Debug PL/SQL

Dialog Boxes for Creating/Editing Objects 4-45

4.70 Select Current RepositoryThis dialog box is displayed if you click Migration, then Repository Management, then Select Current Repository. You can use this dialog box to reconnect to a migration repository after you have disconnected (using Migration, then Repository Management, then Disconnect Migration Repository). In addition, if you have multiple migration repositories, and you can use this dialog box to switch from one to another.

Select Current Repository: Name of the database connection with the migration repository to be used for all operations relating to migrating third-party databases to Oracle.

4.71 Cannot Capture TableThis dialog box is displayed if you try to capture a third-party database before establishing and connecting to a current migration repository.

If no migration repository exists, create one by clicking Migration, then Repository Management, then Create Repository.

To make an existing migration repository the current one, right-click its connection in the Connections navigator and select Associate Migration Repository.

To open a connection to the migration repository, expand the node for its connection in the Connections navigator.

4.72 Run/Debug PL/SQLUse this box to specify parameter values for running or debugging a PL/SQL function or procedure. (If you specify a package, select a function or procedure in the package.)

Target: Name of the function or procedure to run or to run in debug mode. (You have a choice only if you specified a package that has more than one subprogram.)

Parameters: List of each parameter for the specified target. The mode of each parameter can be IN (the value is passed in), OUT (the value is returned, or IN/OUT (the value is passed in, and the result of the function or procedure’s action is stored in the parameter).

PL/SQL Block: A block of PL/SQL code created by SQL Developer. You should change the formal IN and IN/OUT parameter specifications in this block to actual values that you want to use for running or debugging the function or procedure.

For example, to specify 10 as the value for an input parameter named in_rating, change IN_RATING => IN_RATING to IN_RATING => 10.

When you click OK, SQL Developer runs the function or procedure.

If you are debugging a function or procedure, the debugging toolbar and one or more windows for debug-related information are displayed, as explained in Section 1.5, "Running and Debugging Functions and Procedures".

Related TopicsRunning and Debugging Functions and Procedures

Debugging a PL/SQL Procedure (tutorial)

Page 154: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Create/Edit Breakpoint

4-46 SQL Developer Online Help

4.73 Create/Edit BreakpointUse this box to create or edit a breakpoint to use when debugging a PL/SQL function or procedure.

Definition tabSpecify the definition of the breakpoint.

Breakpoint Type: Type of breakpoint, indicating when the breakpoint will occur. Options include breaking when one of the following occurs: a specific line of code (Source); exception class or other class; method, file, or watchpoint.

Breakpoint Details: Options depend on the breakpoint type.

Breakpoint Group Name: Breakpoint group in which to include this breakpoint. Breakpoint groups can be edited, enabled, and disabled.

Conditions tabSpecify any conditions that apply to the breakpoint.

Condition: A SQL condition (WHERE clause without the WHERE keyword) restricting when the breakpoint occurs. For example, to specify that the condition should occur only when status_code is greater than 10, specify:

status_code > 10Thread Options: You can specify whether the breakpoint occurs for all threads, or only when the breakpoint is hit by threads that either do or do not have a specified name.

Pass Count: The number of times the debugger should allow execution to pass over the breakpoint before the breakpoint occurs.

Actions tabSpecify the actions to be taken when the breakpoint occurs. The options you specify override any default values on the Debugger: Breakpoints: Default Actions pane for SQL Developer Preferences.

Halt Execution: Pauses execution when the breakpoint occurs.

Beep: Beeps when the breakpoint occurs.

Log Breakpoint Occurrence: Sends a message to the log window when the breakpoint occurs. You can also specify the following to be included in each display: a tag, and a condition to be evaluated.

Enable/Disable a Group of Breakpoints: Enables or disables the specified breakpoint group when this breakpoint occurs.

Related TopicsRunning and Debugging Functions and Procedures

Debugging a PL/SQL Procedure (tutorial)

4.74 Save/Save AsThis is a standard box for saving information to a file: use Location to navigate to (double-clicking) the folder in which to save the file, then specify the file name (including any extension) and, if necessary, the file type.

Page 155: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Schema Differences

Dialog Boxes for Creating/Editing Objects 4-47

4.75 Save FilesThis box asks if you want to save the specified files before another action occurs (for example, saving procedures you had been editing before disconnecting).

4.76 Unable to Save FilesThis box informs you that SQL Developer is unable to save the specified file or files. To cancel the attempt to save the files and to return to edit the relevant object, click Cancel.

4.77 Save Style SettingsThis dialog box is displayed when you click Save As in the Code Editor: Syntax Colors pane when setting SQL Developer Preferences. You can save the specified color settings as a named color scheme, which adds it to the drop-down list for Scheme in that pane.

4.78 Schema DifferencesThis dialog box is displayed if you click Tools, then Schema Diff. Use this box to find differences between objects of the same type and name (for example, tables named CUSTOMERS) in two different schemas, and optionally to update the objects in one schema (destination) to reflect differences in the other schema (source).

Use the Source tab to specify one database connection, and use the Destination tab to identify the database containing the schema with objects to be compared with the source schema. The database for the destination schema can be the same as, or different from, the database for the source schema.

Source tabConnection: Database connection for the source schema (the schema in which selected objects are to be compared with objects in the destination schema).

Objects: Expand the hierarchy, and select one or more types or objects or specific objects that will compared with objects of the same type and name in the destination schema.

Destination tabConnection: Database connection for the database that contains the destination schema (the schema containing one or more objects of the same type and name as those selected in the source schema). The selected connection can be the same as, or different from, the connection for the source schema.

Schemas: Select a schema in the database associated with the specified connection. SQL Developer will find differences in objects of the same type and name between this schema and the schema for the source connection.

Results tabWhen you click Apply, the Results tab displays SQL statements to modify the destination objects to reflect source object features that are different-- for example, an ALTER TABLE statement to add a column from the source table to the destination table of the same name. However, the statements are not applied to the destination schema objects until you execute them after clicking Save As or Open Editor.

Page 156: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Schema Differences Source or Destination Error

4-48 SQL Developer Online Help

Save As: Enables you to save the results to a .sql file, which you can later execute.

Open Editor: Opens a SQL Worksheet window in which you can edit the results and perform other operations.

Related TopicsDatabase Connections

Database Objects

Using the SQL Worksheet

4.79 Schema Differences Source or Destination ErrorThis error box is displayed if you click Apply before specifying the source or the destination, or both, for a schema differences operation.

Click OK to close the error box, then follow the instructions for performing the schema differences operation, as explained in Section 4.78, "Schema Differences".

4.80 Set Data MappingThis dialog box is displayed if you right-click a captured model and select Set Data Mapping. You can use this dialog box to specify source data type mappings when migrating the specified third-party database to Oracle. If you are editing an existing mapping, you can change only the Oracle data type, precision, and scale information.

Show only data types used in the source model: If you check this option, only data types used in the selected captured model are shown. If you do not check this option, all valid data types for the source (third-party) database are shown.

Source Data Type: Data type name in the third-party database.

Oracle Data Type: Data type name in Oracle Database.

Type: System for a system-defined data type, or User for a user-defined data type.

Add New Rule: Displays the Add/Edit Rule dialog box, for specifying a mapping for another data type.

Edit Rule: Displays the Add/Edit Rule dialog box, for editing the selected mapping.

Remove Rule: Deletes the selected mapping.

Related TopicsMigrating Third-Party Databases

4.81 Add/Edit RuleThis dialog box is displayed if you click Add New Rule or Edit Rule in the Set Data Mapping dialog box, which is used for specifying source data type mappings when migrating a specified third-party database to Oracle.

Source Data Type: Data type name in the third-party database.

Oracle Data Type: Data type name in Oracle Database.

Precision and Scale: Precision and scale values to be used for the source data type and Oracle data type during the conversion.

Page 157: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Save Snippet (User-Defined)

Dialog Boxes for Creating/Editing Objects 4-49

4.82 Set Pause ContinueThis dialog box is displayed if you enter the SQL*Plus statement SET PAUSE ON in the SQL Worksheet and then run the worksheet contents as a script. After the SET PAUSE ON statement is processed, execution pauses (and this dialog box is displayed) after each statement until the SET PAUSE OFF statement is processed.

To have execution continue at the next statement, click OK.

4.83 Sign In (checking for updates)This dialog box is displayed if any of the updates that you selected during the check for updates process are on a remote site that requires you to log in. Currently, all updates are on the Oracle Technology Network (OTN), so you must enter your OTN user name and password.

User Name: Your user name at the remote site.

Password: Your password at the remote site.

Sign Up: If you do not have an account at the remote site, click this link.

Find Password: If you have an account at the remote site but cannot remember your password, click this link.

4.84 Single Record ViewThe main use for this box, which is displayed by right-clicking the display grid for an object and selecting Single Record View, is to edit data for a table or view, one record at a time. After you change data in any cells in a row, you can apply the changes by clicking Apply or by navigating to another record. (For non-Data grids, the cells are read-only.)

Navigation icons: First (<<) moves to the first record, Previous (<) moves to the previous record, Next (>) moves to the next record, and Last (>) moves to the last record.

Apply: Applies changes made to the current data record.

Cancel: Cancels changes made to the current data record, and closes the box.

4.85 Save Snippet (User-Defined)Use this box to create a user-defined snippet. For information about how to create user-defined snippets, including options for snippet categories, see Section 1.8.1, "User-Defined Snippets".

Category: Existing or new category in which to place the snippet. To create a new (user-defined) category, type the category name instead of selecting a category name from the list.

Name: Name of the snippet, as it will be displayed when users see the list of available snippets in the specified category. If an existing Oracle-supplied snippet has the same name in the same category, the user-defined snippet definition replaces the Oracle-supplied definition.

ToolTip: Optional tooltip text to be displayed when the mouse pointer stays briefly over the snippet name in the display of snippets in the specified category.

Snippet: Text that will be inserted for this snippet.

Page 158: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Edit Snippets (User-Defined)

4-50 SQL Developer Online Help

Related TopicsUsing Snippets to Insert Code Fragments

User-Defined Snippets

4.86 Edit Snippets (User-Defined)This box displays any existing user-defined snippets, and enables you to add, edit, or delete user-defined snippets.

To edit an existing user-defined snippet, select its row and click the Edit User Snippet icon, which displays the Save Snippet (User-Defined) dialog box.

To create a new user-defined snippet, click the Add User Snippet icon, which displays the Save Snippet (User-Defined) dialog box.

To delete a user-defined snippet, select its row and click the Delete User Snippet icon.

Related TopicsUsing Snippets to Insert Code Fragments

User-Defined Snippets

4.87 SQL History ListUse this box, which is displayed by clicking the SQL History button in the SQL Worksheet toolbar, to view SQL statements that you have executed and optionally to select (click) one to have it either replace the statements currently on the SQL Worksheet or be added to the statements currently on the SQL Worksheet.

You can click on a column heading to sort the rows by the values in that column.

The SQL history list will not contain any statement that can include a password. Such statements include (but are not necessarily limited to) CONNECT, ALTER USER, and CREATE DATABASE LINK.

Filter: If you type a string in the text box and click Filter, only SQL statements containing that string are displayed.

Clear: Removes all statements from the SQL history.

Replace: Replaces any statements currently on the SQL Worksheet with the selected statement.

Append: Appends the selected statement to any statements currently on the SQL Worksheet

Related TopicsUsing the SQL Worksheet

4.88 SQL*Plus LocationUse this dialog box (displayed if you click Tools and then SQL*Plus and no SQL*Plus executable location is currently defined in your SQL Developer Preferences for Database) to specify the location of the SQL*Plus executable on the system on which you are running SQL Developer. The SQL*Plus executable is under the Oracle home directory or folder, and its specific location and file name depend on your operating system and Oracle Database installation.

Page 159: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Unsupported Database Version

Dialog Boxes for Creating/Editing Objects 4-51

If there is no SQL*Plus executable on the system on which you are running SQL Developer, you cannot invoke SQL*Plus from SQL Developer.

Related TopicsUsing SQL*Plus

4.89 Unable to Open FileThis box informs you that SQL Developer is unable to perform the export operation to the location and file that you specified. The cause might be that you do not have permission to write to that location.

4.90 Unsupported Database VersionThis box is displayed if you try to create a connection to a database release that is not supported by SQL Developer, such as Oracle Database release 8.1. For information about database releases supported by SQL Developer, see Oracle Database SQL Developer Installation Guide.

Page 160: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Unsupported Database Version

4-52 SQL Developer Online Help

Page 161: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Database Objects: Usage Information 5-1

5Database Objects: Usage Information

This topic discusses creating and managing database objects in your schema, plus design considerations and indexing guidelines when developing applications with Oracle Database. It contains the following topics:

■ Overview of Managing Objects

■ Managing Tables

■ Managing Indexes

■ Managing Views

■ Managing Sequences

■ Managing Synonyms

5.1 Overview of Managing ObjectsYou need to create tables, indexes, and possibly other database objects in a schema before you start developing your application. A schema is a collection of database objects. A schema is owned by a database user and has the same name as that user, such as the HR schema. Schema objects are logical structures created by users. Objects can define areas of the database to hold data, such as tables or indexes, or can consist just of a definition, such as a views or synonyms.

Database Objects: Usage Information discusses tables, indexes, views, sequences, and synonyms. Other database (schema) objects include functions, packages, procedures, and triggers. Functions, packages, and procedures are discussed in Subprograms and Packages: Usage Information. Triggers are discussed in Triggers: Usage Information.

Some object types have many more management options than others, but most have a number of similarities. Every object in the database belongs to just one schema and has a unique name within that schema. Therefore, when you create an object, you must ensure it is in the schema where you intend to store it. Generally, you place all of the objects that belong to a single application in the same schema.

A database object name must abide by certain rules, including the rule that it must be unique within its schema. For example, object names cannot be longer than 30 bytes and must begin with a letter. If you attempt to create an object with a name that violates any of these rules, then Oracle raises an error.

See Also:

■ Oracle Database SQL Language Reference for information about database objects, object names, and data types.

Page 162: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Tables

5-2 SQL Developer Online Help

To include lowercase characters, special characters, or spaces in an object name, you must enclose the name in quotation marks (" ") when you type it in a Name field in SQL Developer. Example: "My table"

The following topics describe how to view, create, and manage the various types of objects in your database schemas:

■ Managing Tables

■ Managing Indexes

■ Managing Views

■ Managing Sequences

■ Managing Synonyms

5.2 Managing TablesTables are the basic unit of data storage in an Oracle database. They hold all user-accessible data. A table is two-dimensional object comprised of columns and rows. For example the employees table includes (vertical) columns called first_name, last_name, and employee_id. Each (horizontal) row in the table contains a value for employee name and Id number. The most common type of table in an Oracle database is a relational table.

This topic contains the following topics:

■ Column Data Types

■ Column Default Values

■ Ensuring Data Integrity With Constraints

■ Column Constraints

■ Table-Level Constraints

5.2.1 Column Data TypesData types are required elements that define the nature of the data to be stored in the columns of a table. Data types might include a value to indicate the longest value that can be placed in the column. When you create a table, you must specify a data type for each of its columns. For a discussion of data types, see Data Types: Usage Information.

These data types define the domain of values that each column can contain or each argument can have. For example, DATE columns cannot accept the value February 29 (except for a leap year) or the values 2 or SHOE. Each value subsequently placed in a column assumes the column data type. For example, if you insert 17-JAN-2004 into a date column, then Oracle treats the 17-JAN-2004 character string as a date value after verifying that it translates to a valid date.

See Also:

■ Oracle Database Administrator's Guide for information on managing tables.

■ Oracle Database Concepts for conceptual information on tables types.

■ Oracle Database SQL Language Reference for the syntax required to create and alter tables.

Page 163: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Tables

Database Objects: Usage Information 5-3

In most cases, you should only need columns of NUMBER, VARCHAR2, and DATE data types when creating a definition of a table.

When defining numeric data, you can use the precision option to set the maximum number of digits in the number, and the scale option to define how many of the digits are to the right of the decimal point. For example, a field to hold monetary values might be defined as NUMBER(12,2), providing ten digits for the primary unit of currency (dollars, pounds, marks, and so on) and two digits for the secondary unit (cents, pennies, pfennigs, and so on).

To define a VARCHAR2 field for character data, you must include the size value. Set the size to the maximum number of bytes (or, optionally, characters) to be stored in the column. A column to hold postal codes for different countries, for example, might be restricted to 12 bytes by defining it as VARCHAR2(12).

DATE columns are automatically formatted by Oracle to include a date and time component. Although both the date and time are stored in a date column, by default, the date portion is automatically displayed for you, when retrieving date data. However, Oracle Database enables you great flexibility in how you can display your dates and times.

5.2.2 Column Default ValuesDefault values are values that are automatically stored into the column whenever a new row is inserted without a value being provided for the column. When you define a column with a default value, any new rows inserted into the table store the default value unless the row contains an alternate value for the column. Assign default values to columns that contain a typical value. For example, in the departments table, if most departments are located at one site, then the default value for the location_id column can be set to this value, such as 1700.

Default values can help avoid errors where there is a number, such as zero, that applies to a column that has no entry. For example, a default value of zero can simplify testing, by changing a test like this:

IF salary >= 0 AND salary < 50000

to the simpler form:

IF salary < 50000

Depending upon your business rules, you might use default values to represent zero or FALSE, or leave the default values as NULL to signify an unknown value.

Default values can be defined using any literal, or almost any expression including SYSDATE, which is a SQL function that returns the current date.

5.2.3 Ensuring Data Integrity With ConstraintsYou can define integrity constraints to enforce business rules on data in your tables. Business rules specify conditions and relationships that must always be true, or must always be false.

When an integrity constraint applies to a table, all data in the table must conform to the corresponding rule. When you issue a SQL statement that inserts or modifies data in the table, Oracle Database ensures that the new data satisfies the integrity constraint, without the need to do any checking within your program.

See Also: Oracle Database SQL Language Reference for a complete list of Oracle’s built-in data types.

Page 164: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Tables

5-4 SQL Developer Online Help

You can enforce rules by defining integrity constraints more reliably than by adding logic to your application. Oracle Database can check that all the data in a table obeys an integrity constraint faster than an application can.

Some constraints can be defined at the column level or at the table level. Column level constraints are syntactically defined where the column to which the constraint applies is defined. Table level constraints are syntactically defined at the end of the table definition.

5.2.4 Column ConstraintsColumn constraints are optional elements that determine what values are valid in the column.

The NOT NULL constraint on a column requires that the column must contain a value whenever a row is inserted or updated. Unlike other constraints described in "Table-Level Constraints" on page 5-4, which may be defined as part of the column definition or part of the table definition, the NOT NULL constraint must be defined as part of the column definition.

Use a NOT NULL constraint when the data is required for the integrity of the database. For example, if all employees must belong to a specific department, then the column that contains the department identifier should be defined with a NOT NULL constraint. On the other hand, do not define a column as NOT NULL if the data may be unknown or may not exist when rows are added or changed, for example, the second, optional line in a mailing address.

A primary key constraint automatically adds a NOT NULL constraint to the column or columns included in the primary key, in addition to enforcing uniqueness among the values.

5.2.5 Table-Level ConstraintsYou can apply rules to preserve the integrity of your data. For example, in a table containing employee data, the employee email column must be unique. Similarly, in this table you cannot have two employees with the same employee Id.

Oracle Database enables you to apply data integrity rules as constraints on columns at the table level. Any attempt to insert, update, or remove a row that violates a constraint results in an error and the statement is rolled back. Likewise, any attempt to apply a new constraint to a populated table also results in an error if any existing row violates the new constraint.

The types of constraints you can apply at the table level are as follows:

■ Primary Key

■ Unique Key

■ Check Constraint

■ Foreign Key

Constraints can be created and, in most cases, modified with a number of different status values. The options include enabled or disabled, which determine if the constraint is checked when rows are added, modified, or removed; and deferred or immediate, which cause constraint validation to occur at the end of a transaction or at the end of a statement, respectively.

See Also: Oracle Database Concepts for more information on constraints.

Page 165: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Tables

Database Objects: Usage Information 5-5

5.2.5.1 Primary KeyA primary key requires that a column (or combination of columns) be the unique identifier of the row and ensures that no duplicate rows exist. A primary key column cannot contain NULL values. Each table can have only one primary key.

Use the following guidelines when selecting a primary key:

■ Whenever practical, create a sequence number generator to generate unique numeric values for your primary key values.

■ Choose a column whose data values are unique, because the purpose of a primary key is to uniquely identify each row of the table.

■ Choose a column whose data values are never changed. A primary key value is only used to identify a row in the table, and its data should never be used for any other purpose. Therefore, primary key values should rarely or never be changed.

■ Choose a column that does not contain any nulls. A PRIMARY KEY constraint, by definition, does not allow any row to contain a null in any column that is part of the primary key.

■ Choose a column that is short and numeric. Short primary keys are easy to type.

■ Minimize your use of composite primary keys. A composite primary key constraint applies to more than one column. Although composite primary keys are allowed, they do not satisfy all of the other recommendations. For example, composite primary key values are long and cannot be assigned by sequence numbers.

5.2.5.2 Unique KeyA unique key requires that every value in a column be unique. That is, no two rows can have duplicate values in a specified column or combination of columns.

Choose columns for unique keys carefully. The purpose of these constraints is different from that of primary keys. Unique key constraints are appropriate for any column where duplicate values are not allowed. Primary keys identify each row of the table uniquely, and typically contain values that have no significance other than being unique. In the employees table, the email column has a unique key constraint because it is important that the emails for each employee are unique. Note that the email column has a NOT NULL constraint.

Some examples of good unique keys include:

■ An employee social security number where the primary key might be the employee number

■ A truck license plate number where the primary key might be the truck number

■ A customer phone number, consisting of the two columns area_code and local_phone where the primary key might be the customer number

■ A department name and location where the primary key might be the department number

5.2.5.3 Check ConstraintA check constraint requires that a column (or combination of columns) satisfy a condition for every row in the table. A check constraint must be a boolean expression that is evaluated using the column value about to be inserted or updated to the row.

Page 166: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Indexes

5-6 SQL Developer Online Help

Use CHECK constraints when you need to enforce integrity rules based on logical expressions, such as comparisons. Never use CHECK constraints when any of the other types of integrity constraints can provide the necessary checking.

Examples of CHECK constraints include the following:

■ A CHECK constraint on employee salaries so that no salary value is less than 0.

■ A CHECK constraint on department locations so that only the locations Boston, New York, and Dallas are allowed.

■ A CHECK constraint on the salary and commissions columns to prevent the commission from being larger than the salary.

5.2.5.4 Foreign KeyWhenever two tables contain one or more common columns, you can enforce the relationship between the tables through a referential integrity constraint with a foreign key. A foreign key requires that all column values in the child table exist in the parent table. The table that includes the foreign key is called the dependent or child table. The table that is referenced is called the parent table.

An example of a foreign key constraint is when the department column of the employees table (child) must contain a department ID that exists in the parent departments table.

Foreign keys can be comprised of multiple columns. Such a composite foreign key must reference a composite primary or unique key of the exact same structure, with the same number of columns and the same data types. Because composite primary and unique keys are limited to 32 columns, a composite foreign key is also limited to 32 columns. You must use the same data type for corresponding columns in the parent and child tables. The column names do not need to match.

5.3 Managing IndexesIndexes are optional structures associated with tables. You can create them to improve query performance. Just as the index in this book helps you to quickly locate specific information, an Oracle Database index provides a quick access path to table data.

You can create indexes on one or more columns of a table. After an index is created, it is automatically maintained and used by Oracle Database. Changes to a table's data or structure, such as adding new rows, updating rows, or deleting rows, are automatically incorporated into all relevant indexes with complete transparency to the user.

Some indexes are created implicitly through constraints that are placed on a table. For example, a column with the constraint that its values be unique causes Oracle Database to create a unique key index.

Oracle Database automatically creates the indexes necessary to support data integrity defined with constraints when you add or enable those constraints. For performance purposes, you might want to add an index to the columns you define in a child table when adding a foreign key constraint. Before you add additional indexes, you should examine the performance of your database. You can then compare performance after the new indexes are added.

After index creation, Oracle Database automatically synchronizes the index with any subsequent inserts, updates, or deletes to the base table.

Indexes are generally of value to queries and to SQL statements that need to operate on a single, existing row or a small number of existing rows. Too many indexes can

Page 167: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Indexes

Database Objects: Usage Information 5-7

cause serious problems by increasing the processing overhead for statements that add, modify, or delete rows. In some cases, a statement could use two or more indexes and the optimizer picks just one of them. Unless other statements can take advantage of the unused indexes, they are not providing any benefit. Therefore, you might find yourself deleting indexes if you create too many.

This topic contains the following topics:

■ Creating Indexes for Use with Constraints

■ Index Types

■ Guidelines for Creating Indexes

5.3.1 Creating Indexes for Use with ConstraintsAll enabled unique and primary keys require corresponding indexes, although in most cases the indexes are created automatically. Note the following:

■ Constraints use existing indexes where possible, rather than creating new ones.

■ Unique and primary keys can use non-unique as well as unique indexes. They can even use just the first few columns of non-unique indexes.

■ At most one unique or primary key can use each non-unique index.

■ The column orders in the index and the constraint do not need to match.

You should almost always index foreign keys; the database does not do this for you automatically.

5.3.2 Index TypesIndexes can be categorized in a number of ways. The primary options are:

5.3.2.1 NormalA standard, B-tree index contains an entry for each value in the index key along with an address to the row where the value is stored. A B-tree index is the default and most common type of index in an Oracle database.

5.3.2.2 Ascending and DescendingThe default search through an index is from lowest to highest value, where character data is sorted by ASCII values, numeric data from smallest to largest number, and date from the earliest to the latest value. This default behavior is performed in indexes created as ascending indexes. You can cause index searches to reverse the search order by creating the related index with the descending option.

5.3.2.3 Column and Function-basedTypically, an index entry is based on the value or values found in the table's column or columns. This is a column index. Alternatively, you can create a function-based index in which the indexed value is derived from the table data. For example, to find character data that can be in mixed case, you could use a function-based index to look for the values as if they were all in uppercase characters.

5.3.2.4 Single Column and Concatenated You can create an index on just one column, which is called a single column index, or on multiple columns, which is called a concatenated index. Concatenated indexes are

Page 168: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Indexes

5-8 SQL Developer Online Help

useful when all of the columns are likely to be included in the WHERE clause of frequently executed SQL statements.

For concatenated indexes, you should define the columns used in the index carefully so that the column with the fewest duplicate values is named first, the column with next fewest duplicate values is second, and so on. Columns with many duplicate values or many rows with NULL values should not be included or should be the last-named columns in the index definition.

5.3.3 Guidelines for Creating IndexesYou can create indexes on columns to speed up queries. Indexes provide faster access to data for operations that return a small portion of a table's rows.

In general, you should create an index on a column in any of the following situations:

■ The column is queried frequently.

■ A referential integrity constraint exists on the column.

■ A UNIQUE key integrity constraint exists on the column.

You can create an index on any column; however, if the column is not used in any of these situations, creating an index on the column does not increase performance and the index takes up resources unnecessarily.

Although the database creates an index for you on a column with an integrity constraint, explicitly creating an index on such a column is recommended.

5.3.3.1 Index the Correct Tables and ColumnsUse the following guidelines for determining when to create an index:

■ Create an index if you frequently want to retrieve less than about 15% of the rows in a large table. This threshold percentage varies greatly, however, according to the relative speed of a table scan and how clustered the row data is about the index key. The faster the table scan, the lower the percentage; the more clustered the row data, the higher the percentage.

■ Index columns that are used for joins to improve join performance.

■ Primary and unique keys automatically have indexes, but you might want to create an index on a foreign key. See "Foreign Key" on page 5-6 for more information.

■ Small tables do not require indexes; if a query is taking too long, then the table might have grown from small to large.

Some columns are strong candidates for indexing. Columns with one or more of the following characteristics are good candidates for indexing:

■ Values are unique in the column, or there are few duplicates.

■ There is a wide range of values (good for regular indexes).

■ The column contains many nulls, but queries often select all rows having a value. In this case, a comparison that matches all the non-null values, such as:

WHERE COL_X >= -9.99 *power(10,125)

is preferable to

WHERE COL_X IS NOT NULL

Page 169: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Indexes

Database Objects: Usage Information 5-9

This is because the first uses an index on COL_X (assuming that COL_X is a numeric column).

Columns with the following characteristics are less suitable for indexing:

■ There are many nulls in the column and you do not search on the non-null values.

The size of a single index entry cannot exceed roughly one-half (minus some overhead) of the available space in the data block. Consult with the database administrator for assistance in determining the space required by an index.

5.3.3.2 Limit the Number of Indexes for Each TableThe more indexes, the more overhead is incurred as the table is altered. When rows are inserted or deleted, all indexes on the table must be updated. When a column is updated, all indexes on the column must be updated.

You must weigh the performance benefit of indexes for queries against the performance overhead of updates. For example, if a table is primarily read-only, you might use more indexes; but, if a table is heavily updated, you might use fewer indexes.

5.3.3.3 Choose the Order of Columns in Composite IndexesAlthough you can specify columns in any order in the CREATE INDEX command, the order of columns in the CREATE INDEX statement can affect query performance. In general, you should put the column expected to be used most often first in the index. You can create a composite index (using several columns), and the same index can be used for queries that reference all of these columns, or just some of them.

For example, assume the columns of the vendor_parts table are as follows:

vendor_id part_no unit_cost1010 10-440 0.271010 10-457 5.101012 08-300 1.191012 10-440 0.251012 10-441 0.391012 10-457 4.961220 08-300 1.331292 10-457 5.29

Assume that there are five vendors, and each vendor has about 1000 parts. Suppose that the vendor_parts table is commonly queried by SQL statements such as the following:

SELECT * FROM vendor_parts WHERE part_no = 457 AND vendor_id = 1012;

To increase the performance of such queries, you might create a composite index putting the most selective column first; that is, the column with the most values:

CREATE INDEX ind_vendor_id ON vendor_parts (part_no, vendor_id);

Composite indexes speed up queries that use the leading portion of the index. So in this example, queries with WHERE clauses using only the part_no column also note a performance gain. Because there are only five distinct values, placing a separate index on vendor_id would serve no purpose.

Page 170: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Views

5-10 SQL Developer Online Help

5.3.3.4 Drop Indexes That Are No Longer Required You might drop an index if:

■ It does not speed up queries. The table might be very small, or there might be many rows in the table but very few index entries.

■ The queries in your applications do not use the index.

■ The index must be dropped before being rebuilt.

You cannot drop an index which is created through a constraint. You must drop the constraint and then the index is dropped also.

If you drop a table, then all associated indexes are dropped.

To drop an index, the index must be contained in your schema or you must have the DROP ANY INDEX system privilege.

5.4 Managing ViewsViews are customized presentations of data in one or more tables or other views. You can think of them as stored queries. Views do not actually contain data, but instead derive their data from the tables upon which they are based. These tables are referred to as the base tables of the view.

Like tables, views can be queried, updated, inserted into, and deleted from, with some restrictions. All operations performed on a view actually affect the base tables of the view. Views provide an additional level of security by restricting access to a predetermined set of rows and columns of a table. They also hide data complexity and store complex queries.

5.5 Managing SequencesA sequence is a database object similar to a pseudocolumn that generates unique sequential values. These values are often used for primary and unique keys. Using a sequence generator to provide the value for a primary key in a table is an easy way to guarantee that the key value is unique.

You can refer to sequence values in SQL statements with these pseudocolumns:

■ CURRVAL: Returns the current value of a sequence

■ NEXTVAL: Increments the sequence and returns the next value

You must qualify CURRVAL and NEXTVAL with the name of the sequence, such as employees_seq.CURRVAL or employees_seq.NEXTVAL.

When you create a sequence, you can define its initial value and the increment between its values. The first reference to NEXTVAL returns the initial value of the sequence. Subsequent references to NEXTVAL increment the sequence value by the defined increment and return the new value. Any reference to CURRVAL always returns the current value of the sequence, which is the value returned by the last reference to NEXTVAL.

Before you use CURRVAL for a sequence in your session, you must first initialize the sequence with NEXTVAL.

Page 171: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Synonyms

Database Objects: Usage Information 5-11

5.6 Managing SynonymsA synonym is an alias for any schema object such as a table or view. Synonyms provide an easy way to provide an alternative name for a database object and can be used to simplify SQL statements for database users. For example, you can create a synonym named emps as an alias for the employees table in the HR schema.

If a table in an application has changed, such as the personnel table has replaced the employees table, you can use the employees synonym to refer to the personnel table so that the change is transparent to the application code and the database users.

Because a synonym is simply an alias, it does not require any storage in the database other than its definition.

You can create both public and private synonyms. A public synonym is owned by the special user group named PUBLIC and every user in a database can access it. A private synonym is in the schema of a specific user who has control over its availability to others.

Page 172: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Synonyms

5-12 SQL Developer Online Help

Page 173: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Data Types: Usage Information 6-1

6Data Types: Usage Information

The topic discusses the data types used with Oracle Database. It contains the following topics:

■ Overview of Data Types on page 6-1

■ Storing Character Data on page 6-1

■ Storing Numeric Data on page 6-2

■ Storing Datetime Data on page 6-5

6.1 Overview of Data TypesA data type associates a fixed set of properties with the values that can be used in a column of a table or in an argument of a procedure or function. These properties cause Oracle Database to treat values of one data type differently from values of another data type. For example, Oracle Database can use the addition operator on values of NUMBER data type, but not with values of some other data types. The data types supported by Oracle Database include characters, numbers, and dates and times (known as datetime data types).

To view the data types contained in a database table, such as the employees table, you can use Connections navigator or the SQL*Plus DESCRIBE. For information on the SQL*Plus DESCRIBE command, see SQL*Plus DESCRIBE Command.

6.2 Storing Character DataThis topic contains the following topics:

■ What are the Character Data Types?

■ Choosing Between the Character Data Types

6.2.1 What are the Character Data Types?You can use the following SQL data types to store alphanumeric data:

■ VARCHAR2 and NVARCHAR2 data types store variable-length character literals.

See Also:

■ Oracle Database SQL Language Reference for complete reference information on the SQL data types

■ Oracle Database Concepts to learn about Oracle built-in data types

Page 174: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Numeric Data

6-2 SQL Developer Online Help

■ NCHAR and NVARCHAR2 data types store variable-length Unicode character data only.

■ CHAR and NCHAR data types store fixed-length character literals.

6.2.2 Choosing Between the Character Data TypesWhen deciding which data type to use for a column that will store alphanumeric data in a table, consider the following points of distinction:

■ Space usage

To store data more efficiently, use the VARCHAR2 data type. The CHAR data type blank-pads and stores trailing blanks up to a fixed column length for all column values, whereas the VARCHAR2 data type does not add extra blanks.

■ Comparison semantics

Use the CHAR data type when you require ANSI compatibility in comparison semantics (when trailing blanks are not important in string comparisons). Use the VARCHAR2 when trailing blanks are important in string comparisons.

■ Future compatibility

The CHAR and VARCHAR2 data types are fully supported.

6.3 Storing Numeric DataThis topic contains the following topics:

■ What Are the Numeric Data Types?

■ Using NUMBER Data Types

■ Using Floating-Point Number Formats

6.3.1 What Are the Numeric Data Types?The following SQL data types store numeric data:

■ NUMBER

■ BINARY_FLOAT

■ BINARY_DOUBLE

Use the NUMBER data type to store integers and real numbers in a fixed-point or floating-point format. Numbers using this data type are guaranteed to be portable among different Oracle Database platforms. For nearly all cases where you need to store numeric data, you would use the NUMBER data type.

Oracle Database provides the numeric BINARY_FLOAT and BINARY_DOUBLE data types exclusively for floating-point numbers. They support all of the basic

See Also:

■ Oracle Database SQL Language Reference for information on data types

■ Oracle Database Globalization Support Guide for information on globalization support

See Also: Oracle Database SQL Language Reference for more information on comparison semantics for these data types

Page 175: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Numeric Data

Data Types: Usage Information 6-3

functionality provided by the NUMBER data type. However, while NUMBER uses decimal precision, BINARY_FLOAT and BINARY_DOUBLE use binary precision. This enables faster arithmetic calculations and usually reduces storage requirements.

6.3.2 Using NUMBER Data TypesThe NUMBER data type stores zero as well as positive and negative fixed numbers with absolute values from 1.0 x 10-130 to (but not including) 1.0 x 10126. If you specify an arithmetic expression whose value has an absolute value greater than or equal to 1.0 x 10126, then Oracle returns an error. Each NUMBER value requires from 1 to 22 bytes.

When you specify a fixed-point number use the following form to specify the precision and scale of the number:

NUMBER(precision, scale)

Precision and scale are defined as follows:

■ Precision is the total number of significant decimal digits, where the most significant digit is the left-most nonzero digit, and the least significant digit is the right-most known digit. For examples, see Table 6–1 on page 6-4.

■ Scale is the number of digits from the decimal point to the least significant digit. The scale can range from -84 to 127. For examples, see Table 6–1 on page 6-4.

– Positive scale is the number of significant digits to the right of the decimal point to and including the least significant digit.

– Negative scale is the number of significant digits to the left of the decimal point, to but not including the least significant digit. For negative scale the least significant digit is on the left side of the decimal point, because the actual data is rounded to the specified number of places to the left of the decimal point. For example, a specification of (10,-2) means to round to hundreds.

Scale can be greater than precision, most commonly when e notation is used. When scale is greater than precision, the precision specifies the maximum number of significant digits to the right of the decimal point. For example, a column defined as NUMBER(4,5) requires a zero for the first digit after the decimal point and rounds all values past the fifth digit after the decimal point.

It is good practice to specify the scale and precision of a fixed-point number column for extra integrity checking on input. Specifying scale and precision does not force all values to a fixed length. If a value exceeds the precision, then Oracle returns an error. If a value exceeds the scale, then Oracle rounds it.

Specify an integer using the following form:

NUMBER(p)

This represents a fixed-point number with precision p and scale 0 and is equivalent to NUMBER(p,0).

Specify a floating-point number using the following form:

NUMBER

See Also:

■ Oracle Database Concepts for information about the internal format for the NUMBER data type

■ Oracle Database SQL Language Reference for more information about the NUMBER, BINARY_FLOAT, and BINARY_DOUBLE data types formats

Page 176: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Numeric Data

6-4 SQL Developer Online Help

The absence of precision and scale designators specifies the maximum range and precision for an Oracle number.

Table 6–1 show how Oracle stores data using different values for precision and scale.

6.3.3 Using Floating-Point Number FormatsThe BINARY_FLOAT and BINARY_DOUBLE data types store floating-point data in the 32-bit IEEE 754 format and the double precision 64-bit IEEE 754 format respectively. Compared to the Oracle NUMBER data type, arithmetic operations on floating-point data are usually faster for BINARY_FLOAT and BINARY_DOUBLE. Also, high-precision values require less space when stored as BINARY_FLOAT and BINARY_DOUBLE.

The floating-point number system is a common way of representing and manipulating numeric values in computer systems. The value 4.32682E-21F is an example of a BINARY_FLOAT data type.

Floating-point numbers can have a decimal point anywhere from the first to the last digit or can have no decimal point at all. An exponent may optionally be used following the number to increase the range (for example, 1.777 e-20). A scale value is not applicable to floating-point numbers, because the number of digits that can appear after the decimal point is not restricted.

Binary floating-point numbers differ from NUMBER in the way the values are stored internally by Oracle Database. Values are stored using decimal precision for NUMBER. All literals that are within the range and precision supported by NUMBER are stored exactly as NUMBER. Literals are stored exactly because literals are expressed using decimal precision (the digits 0 through 9). Binary floating-point numbers are stored using binary precision (the digits 0 and 1). Such a storage scheme cannot represent all values using decimal precision exactly. Frequently, the error that occurs when converting a value from decimal to binary precision is undone when the value is converted back from binary to decimal precision. The literal 0.1 is such an example.

Table 6–1 Storage of Scale and Precision

Actual Data Specified As Stored As

123.89 NUMBER 123.89

123.89 NUMBER(3) 124

123.89 NUMBER(6,2) 123.89

123.89 NUMBER(6,1) 123.9

123.89 NUMBER(3) exceeds precision

123.89 NUMBER(4,2) exceeds precision

123.89 NUMBER(6,-2) 100

.01234 NUMBER(4,5) .01234

.00012 NUMBER(4,5) .00012

.000127 NUMBER(4,5) .00013

.0000012 NUMBER(2,7) .0000012

.00000123 NUMBER(2,7) .0000012

1.2e-4 NUMBER(2,5) 0.00012

1.2e-5 NUMBER(2,5) 0.00001

Page 177: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Datetime Data

Data Types: Usage Information 6-5

6.3.3.1 BINARY_FLOATBINARY_FLOAT is a 32-bit, single-precision floating-point number data type. Each BINARY_FLOAT value requires 5 bytes, including a length byte.

6.3.3.2 BINARY_DOUBLEBINARY_DOUBLE is a 64-bit, double-precision floating-point number data type. Each BINARY_DOUBLE value requires 9 bytes, including a length byte.

In a NUMBER column, floating point numbers have decimal precision. In a BINARY_FLOAT or BINARY_DOUBLE column, floating-point numbers have binary precision. The binary floating-point numbers support the special values infinity and NaN (not a number).

You can specify floating-point numbers within the limits listed in Table 6–2 on page 6-5.

6.4 Storing Datetime DataThis topic contains the following topics:

■ Using DATE and TIMESTAMP Data Types

■ Manipulating the DATE and TIME Formats

6.4.1 Using DATE and TIMESTAMP Data TypesOracle Database supports the following datetime data types:

■ DATE

■ TIMESTAMP

■ TIMESTAMP WITH TIME ZONE

■ TIMESTAMP WITH LOCAL TIME ZONE

6.4.1.1 Using the DATE Data TypeUse the DATE data type to store point-in-time values (dates and times) in a table. An application that specifies the time for a job might use the DATE data type.

The DATE data type stores the century, year, month, day, hours, minutes, and seconds. The valid date range is from January 1, 4712 BC to December 31, 9999 AD.

Table 6–2 Floating Point Number Limits

Value Binary-Float Binary-Double

Maximum positive finite value 3.40282E+38F 1.79769313486231E+308

Minimum positive finite value 1.17549E-38F 2.22507485850720E-308

See Also:

■ Oracle Database SQL Language Reference for information on DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, and TIMESTAMP WITH LOCAL TIME ZONE data types

Page 178: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Datetime Data

6-6 SQL Developer Online Help

6.4.1.2 Using the TIMESTAMP Data TypeUse the TIMESTAMP data type to store values that are precise to fractional seconds. An application that must decide which of two events occurred first might use TIMESTAMP.

6.4.1.3 Using the TIMESTAMP WITH TIME ZONE Data TypeBecause TIMESTAMP WITH TIME ZONE can also store time zone information, it is particularly suited for recording date information that must be gathered or coordinated across geographic regions.

6.4.1.4 Using the TIMESTAMP WITH LOCAL TIME ZONE Data TypeUse TIMESTAMP WITH LOCAL TIME ZONE when the time zone is not significant. For example, you might use it in an application that schedules teleconferences, where participants each see the start and end times for their own time zone.

The TIMESTAMP WITH LOCAL TIME ZONE type is appropriate for two-tier applications in which you want to display dates and times that use the time zone of the client system. It is generally inappropriate in three-tier applications because data displayed in a Web browser is formatted according to the time zone of the Web server, not the time zone of the browser. The Web server is the database client, so its local time is used.

6.4.1.5 Representing the Difference Between Datetime ValuesUse the INTERVAL DAY TO SECOND data type to represent the precise difference between two datetime values. For example, you might use this value to set a reminder for a time 36 hours in the future or to record the time between the start and end of a race. To represent long spans of time with high precision, you can use a large value for the days portion.

Use the INTERVAL YEAR TO MONTH data type to represent the difference between two datetime values, where the only significant portions are the year and the month. For example, you might use this value to set a reminder for a date 18 months in the future, or check whether 6 months have elapsed since a particular date.

Oracle Database stores dates in its own internal format which is fixed-length fields of seven bytes each, corresponding to century, year, month, day, hour, minute, and second.

6.4.2 Manipulating the DATE and TIME FormatsFor input and output of dates, the standard Oracle Database default date format is DD-MON-RR. The RR datetime format element enables you store 20th century dates in the 21st century by specifying only the last two digits of the year.

Time is stored in a 24-hour format as HH24:MI:SS. By default, the time in a DATE column is 12:00:00 A.M. (midnight) if no time portion is entered or if the DATE is truncated. In a time-only entry, the date portion defaults to the first day of the current month.

You can change the current default date or time format for a specific date or timestamp with the use the TO_DATE or TO_TIMESTAMP function with a format mask, such as:

TO_DATE('27-OCT-98', 'DD-MON-RR')TO_DATE('15-NOV-05 10:56 A.M.','DD-MON-YY HH:MI A.M.')TO_TIMESTAMP ('10-Sep-05 14:10:10.123000',

'DD-Mon-RR HH24:MI:SS.FF')

Page 179: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Datetime Data

Data Types: Usage Information 6-7

Oracle Database provides various functions for calculating and converting datetime data. For examples in SQL statements, see Using Date Functions.

Be careful when using a date format such as DD-MON-YY. The YY indicates the year in the current century. For example, 31-DEC-92 is December 31, 2092, not 1992 as you might expect. If you want to indicate years in any century other than the current one, use a format mask such as the default RR.

You can use the following techniques to change the default date format on a more global level:

■ To change on an instance-wide basis, use the NLS_DATE_FORMAT parameter.

■ To change during a session, use the ALTER SESSION statement.

For more information on these techniques, see Working in a Global Environment.

See Also:

■ Oracle Database SQL Language Reference for more information about date and time formats

■ Oracle Database Concepts for information about Julian dates. Oracle Database Julian dates might not be compatible with Julian dates generated by other date algorithms.

Page 180: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Storing Datetime Data

6-8 SQL Developer Online Help

Page 181: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL: Usage Information 7-1

7SQL: Usage Information

This topic discusses how to use SQL with Oracle Database. It includes the following topics:

■ Overview of SQL

■ Retrieving Data With Queries

■ Manipulating Data With SQL Statements

■ Transaction Control Statements

■ Using Pseudocolumns, Sequences, and SQL Functions

■ Using SQL Data Definition Language Statements

7.1 Overview of SQLStructured Query Language (SQL) is a database access, nonprocedural language. Users issue SQL statements or commands to perform various tasks, such as retrieving data, and the SQL language compiler automatically handles how to navigate the database and perform the desired task. All database operations are performed using SQL.

This topic includes the following topics:

■ Features of SQL

■ Types of SQL Statements

7.1.1 Features of SQLWith SQL statements you can perform the following:

■ Query, insert, update, and delete data in tables

See Also:

■ Oracle Database SQL Language Reference for detailed information about SQL statements and other parts of SQL, such as operators, functions, and format models.

■ Oracle Database Concepts for conceptual information on SQL.

■ SQL*Plus User's Guide and Reference for information about SQL*Plus, Oracle's version of SQL.

■ Oracle Database Sample Schemas for information on the HR sample schema that is used for examples.

Page 182: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Retrieving Data With Queries

7-2 SQL Developer Online Help

■ Format, perform calculations on, store, and print from query results

■ Examine table and object definitions

■ Develop and run batch scripts

■ Perform database administration

7.1.2 Types of SQL StatementsAll operations performed on the information in an Oracle database are run using SQL statements. A statement consists partially of SQL reserved words, which have special meaning in SQL and cannot be used for any other purpose. For example, SELECT and UPDATE are reserved words and cannot be used as table names.

A SQL statement is an instruction. The statement must be the equivalent of a complete SQL sentence, as in:

SELECT last_name, department_id FROM employees;

Oracle SQL statements are divided into several categories:

■ Data Manipulation Language (DML) Statements

These statements query, insert, update, delete data in tables.

■ Transaction Control Statements

These statements commit or rollback the processing of transactions. A group of changes that you make is referred to as a transaction.

■ Data Definition Language (DDL) Statements

These create, alter, and drop database objects.

7.2 Retrieving Data With QueriesYou can retrieve data from rows stored one or more database tables or views with a query using the SQL SELECT statement. The SELECT statement retrieves the all of or part of the column data from rows depending on the conditions that you specify in WHERE clauses. The group of columns that are selected from a table is referred to as the SELECT list.

■ Displaying Data Using the SELECT Statement

■ Using Character Literals in SQL Statements

■ Using a Column Alias to Change Headings When Selecting Data

■ Restricting Data Using the WHERE Clause

■ Sorting Data Using the ORDER BY Clause

■ Displaying Data From Multiple Tables

7.2.1 Displaying Data Using the SELECT StatementWith the SQL SELECT statement, you can query and display data of tables in a database.

Example 7–1 shows how to use SELECT to retrieve data from the employees table. In this example, the data for all columns in a row (record) of the employees table is retrieved with the use of the wildcard (*) notation. Note the use of comments to

Page 183: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Retrieving Data With Queries

SQL: Usage Information 7-3

document the SQL statements. The comments (or remarks) in this example begin with --.

Example 7–1 Using SELECT to Retrieve Data

-- the following uses the wildcard * to retrieve all the columns of data in-- all rows of the employees tableSELECT * FROM employees;

Example 7–2 shows how to use SELECT to retrieve the data for specific columns of the employees table. In this example, you explicitly enter the column names in the SELECT statement.

Example 7–2 Using SELECT to Retrieve Data From Specific Columns

-- the following retrieves the data in columns employee_id, last_name, first_nameSELECT employee_id, last_name, first_name FROM employees;

7.2.2 Using Character Literals in SQL StatementsMany SQL statements, functions, expressions, and conditions require you to specify character literal values. You can specify character literals with the following notations:

■ Character literals with the 'text' notation, as in the literals 'users01.dbf' and 'Muthu''s computer'.

■ National character literals with the N'text' or n'text' notation, where N or n specifies the literal using the national character set. For example, N'résumé' is a National character literal.

For information on unicode literals, see Unicode String Literals.

7.2.2.1 Quoting Character LiteralsBy default you must quote character literals in single-quotes, as in 'Hello'. This technique can sometimes be inconvenient if the text itself contains single quotes. In such cases, you can also use the Q-quote mechanism, which enables you to specify q or Q followed by a single quote and then another character to be used as the quote delimiter. For example, the literal q'#it's the "final" deadline#' uses the pound sign (#) as a quote delimiter for the string it's the "final" deadline.

The Q-quote delimiter can be any single- or multibyte character except space, tab, and return. If the opening quote delimiter is a [, {, <, or ( character, then the closing quote delimiter must be the corresponding ], }, >, or ) character. In all other cases, the opening and closing delimiter must be the identical character.

The following character literals use the alternative quoting mechanism:

q'(name LIKE '%DBMS_%%')'q'<'Data,' he said, 'Make it so.'>'q'"name like '['"'nq'ïŸ1234ï'

See Also:

■ Oracle Database SQL Language Reference for detailed information on the SQL SELECT statement.

Page 184: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Retrieving Data With Queries

7-4 SQL Developer Online Help

7.2.3 Using a Column Alias to Change Headings When Selecting DataWhen displaying the result of a query, SQL normally uses the name of the selected column as the column heading. You can change a column heading by using a column alias to make the heading more descriptive and easier to understand.

You can specify the alias after the column name in the SELECT list using a space as a separator. If the alias contains spaces or special characters (such as # or $), or if it is case-sensitive, enclose the alias in double quotation marks (" ").

Example 7–3 shows the use of a column alias to provide more description for each heading of the columns selected in a query.

Example 7–3 Using a Column Alias

-- the following retrieves the data in columns employee_id, last_name, first_name-- and provides column aliases for more descriptive headings of the columnsSELECT employee_id "Employee Id number", last_name "Employee last name", first_name "Employee first name" FROM employees;

7.2.4 Restricting Data Using the WHERE ClauseThe WHERE clause uses comparison operators to identify specific rows in a table. When used with the SELECT statement, you can selectively retrieve rows from a table rather than retrieving all rows of a table.

Comparison operators include those listed in Table 7–1.

Example 7–4 shows how to use SELECT with a WHERE clause and several comparison operators to retrieve specific rows of data from the employees table.

Example 7–4 Using SELECT With a WHERE Clause

-- the following retrieves data where the manager_id equals 122SELECT * FROM employees WHERE manager_id = 122;

See Also:

■ Oracle Database Globalization Support Guide to learn about national character sets

■ Oracle Database SQL Language Reference to learn about character literals

Table 7–1 Comparison Operators

Operator Definition

=, !=, <> test for equal, not equal, not equal

>, >=, <, <= test greater than, greater than or equal to, less than, less than or equal to

BETWEEN ... AND ... check for range between and including two values

LIKE search for a match in string, using the wildcard symbols % (zero or multiple characters) or _ (one character)

IN ( ) test for a match in a specified list of values

IS NULL, IS NOT NULL check whether is null (no value), is not null

Page 185: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Retrieving Data With Queries

SQL: Usage Information 7-5

-- this retrieves data where the manager_id equals 122 and job_id is ST_CLERKSELECT * FROM employees WHERE manager_id = 122 AND job_id = 'ST_CLERK';

-- this retrieves employees with managers with Ids between 122 and 125 inclusiveSELECT * FROM employees WHERE manager_id BETWEEN 122 AND 125;

-- this uses the wildcard % to retrieve employee data -- where the last name contains mar somewhere in the nameSELECT employee_id, last_name FROM employees WHERE last_name LIKE '%mar%';

-- this retrieves employees where the last name starts with MarSELECT employee_id, last_name FROM employees WHERE last_name LIKE 'Mar%';

-- this retrieves employees where the commission percentage is not nullSELECT employee_id, last_name FROM employees WHERE commission_pct IS NOT NULL;

-- the following retrieves data where the employee_id equals 125, 130, or 135SELECT employee_id, last_name, first_name FROM employees WHERE employee_id IN (125, 130, 135);

7.2.5 Sorting Data Using the ORDER BY ClauseYou can use SELECT with the ORDER BY clause to retrieve and display rows from a table ordered (sorted) by a specified column in the table. The specified column in the ORDER BY clause does not have to be in the select-list of columns that you want to display.

You can specify the sort order ASC for ascending or DESC for descending. The default sort order is ascending, which means:

■ Numeric values are displayed with the lowest values first, such as 1 to 999.

■ Character values are displayed in alphabetical order, such as A first and Z last.

■ Date values are displayed with the earliest value first, such as 01-JUN-93 before 01-JUN-95.

Null (empty) values are displayed last for ascending sequences and first for descending sequences.

Example 7–5 shows how to use SELECT with the ORDER BY clause to retrieve and display rows from the employees table ordered (sorted) by specified columns.

Example 7–5 Using SELECT With ORDER BY

-- the following retrieves rows with manager_id = 122 ordered by employee_id-- the order is the default ascending order, lowest employee_id displays firstSELECT * FROM employees WHERE manager_id = 122 ORDER BY employee_id;

-- the following retrieves rows ordered by manager_id-- the order is specified as descending, highest manager_id displays firstSELECT employee_id, last_name, first_name, manager_id FROM employees ORDER BY manager_id DESC;

See Example 7–20 on page 7-14 for the use of ORDER BY with the GROUP BY clause.

See Also:

■ Oracle Database SQL Language Reference for detailed information on using the WHERE clause.

Page 186: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Retrieving Data With Queries

7-6 SQL Developer Online Help

7.2.6 Displaying Data From Multiple TablesYou can use SELECT to display data from the multiple tables. This process is referred to as joining the tables. In a join, multiple tables share a similar column.

When you retrieve data from multiple tables, you can explicitly identify which table a column belongs to. This is important when tables contain columns with the same name. You can use the complete table name to explicitly identify a column, such as employees.employee_id, or a table alias. Note the use of the table aliases (d, e, and l) to explicitly identify the columns by table in the SQL statement. The alias is defined in the FROM clause of the SQL statement. A table alias is used to simply and reduce the size of the SQL code.

Example 7–6 is an example of querying data from joined tables using ANSI syntax. The first SELECT joins two tables and the second SELECT joins three tables.

Example 7–6 Selecting Data From Multiple Tables With the ANSI Join Syntax

-- the following SELECT statements retrieve data from two tables-- that have a corresponding column (department_id)-- this join uses ANSI syntax, note the use of JOIN and ONSELECT e.employee_id, e.last_name, e.first_name, e.department_id, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;

-- the following SELECT retrieves data from three tables-- two tables have the corresponding column department_id and -- two tables have the corresponding column location_idSELECT e.employee_id, e.last_name, e.first_name, e.department_id, d.department_name, d.location_id, l.country_id FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN locations l ON d.location_id = l.location_id;

In Example 7–7 the joins use the Oracle-proprietary syntax. There is no performance difference between the ANSI and Oracle syntax.

Example 7–7 Using SELECT to Display Data From Multiple Tables

-- the following SELECT statements retrieve data from two tables-- that have a corresponding column (department_id)-- note that the employees table has been aliased to e and departments to dSELECT e.employee_id, e.last_name, e.first_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id;

-- the following SELECT retrieves data from three tables-- two tables have the corresponding column department_id and -- two tables have the corresponding column location_idSELECT e.employee_id, e.department_id, d.department_name, d.location_id, l.country_id FROM employees e, departments d, locations l WHERE e.department_id = d.department_id AND d.location_id = l.location_id;

See Also:

■ Oracle Database SQL Language Reference for detailed information on using ORDER BY with SELECT.

Page 187: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Manipulating Data With SQL Statements

SQL: Usage Information 7-7

7.3 Manipulating Data With SQL StatementsData manipulation language (DML) statements query or manipulate data in existing schema objects. They enable you to:

■ Add new rows of data into a table or view (INSERT)

■ Change column values in existing rows of a table or view (UPDATE)

■ Remove rows from tables or views (DELETE)

DML statements are the most frequently used SQL statements.

■ Adding Data With the INSERT Statement

■ Updating Data With the UPDATE Statement

■ Deleting Data With the DELETE Statement

7.3.1 Adding Data With the INSERT StatementYou can use the SQL INSERT statement to add a row of data to a table. The data inserted must be valid for the data type and size of each column of the table.

Example 7–8 shows how to use INSERT to add a row to the employees table. In the first INSERT statement, values are inserted into all columns in a row of the table. When you insert data into the columns, you must provide data values that are valid for the data type and size of the column.

In the second INSERT statement, values are inserted only into the specified columns of the table and the remaining columns are set to NULL. If the those remaining columns had been specified with a NOT NULL constraint for the table, an error would have been raised. For information on constraints, see "Managing Tables" and Column Constraints.

Example 7–8 Using the INSERT Statement

-- the following inserts data for all the columns in a rowINSERT INTO employees VALUES (300, 'Enrique', 'Belden', 'enrique.belden', '555.111.2222', '01-AUG-05', 'AC_MGR', 9000, .1, 101, 110);

-- the following inserts data into the columns specified by name-- NULLs are inserted in those columns not explicitly named INSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary) VALUES (301, 'Doe', 'john.doe', '31-AUG-05', 'SH_CLERK', 2400);

-- the following shows the rows were inserted beginning with 300SELECT employee_id, last_name FROM employees WHERE employee_id >= 300;

See Also:

■ "Joins" in Oracle Database SQL Language Reference for information on using SELECT with multiple tables.

See Also:

■ Oracle Database SQL Language Reference for information on the INSERT statement.

Page 188: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Transaction Control Statements

7-8 SQL Developer Online Help

7.3.2 Updating Data With the UPDATE StatementYou can use the SQL UPDATE statement to update data in a row of a table. The updated data must be valid for the data type and size of each column of the table.

Example 7–9 shows how to use UPDATE to update data in the employees table. Note the use of the use of multiplication operator * to calculate a new salary. For information on arithmetic operators, See "Using Arithmetic Operators" on page 7-12.

Example 7–9 Using the UPDATE Statement

SELECT salary FROM employees WHERE employee_id = 301;

-- update the salary for employee 301, multiply the salary by 105%UPDATE employees SET salary = salary * 1.05 WHERE employee_id = 301;

-- the following should show a change in salarySELECT salary FROM employees WHERE employee_id = 301;

7.3.3 Deleting Data With the DELETE StatementWith the SQL DELETE statement you can delete all or specific rows in a table.

When you delete all the rows in a table, the empty table still exists. If you want to remove the entire table from the database, use the SQL DROP statement. See "Dropping a Table With SQL" on page 7-17.

Example 7–10 shows how to use DELETE to delete selected rows in the employees table. Note the use of the WHERE clause. Without that clause, all the rows would be deleted.

Example 7–10 Using the DELETE Statement

DELETE FROM employees WHERE employee_id = 300 OR employee_id = 301;

-- the following query should not find any recordsSELECT * FROM employees WHERE employee_id = 300 OR employee_id = 301;

If you accidentally delete rows, you can restore the rows with the ROLLBACK statement. See "Rolling Back a Transaction" on page 7-9.

7.4 Transaction Control StatementsTransaction control statements manage the changes made by DML statements and group DML statements into transactions. They enable you to:

■ Make a transaction's changes permanent (COMMIT)

■ Undo the changes in a transaction, either since the transaction started or since a savepoint (ROLLBACK)

See Also:

■ Oracle Database SQL Language Reference for information on the UPDATE statement.

See Also:

■ Oracle Database SQL Language Reference for information on the DELETE statement.

Page 189: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Transaction Control Statements

SQL: Usage Information 7-9

This topic includes the following topics:

■ Committing Transaction Changes

■ Rolling Back a Transaction

7.4.1 Committing Transaction ChangesThe SQL COMMIT statement saves any changes you have made to the database. When a COMMIT has been executed, all the recent changes since the last COMMIT, or since you logged on as the current user, are saved.

Example 7–11 shows how to use COMMIT to commit (save) changes to the employees table in the database.

Example 7–11 Using the COMMIT Statement

-- add a row and then update the dataINSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary) VALUES (301, 'Doe', 'john.doe', '31-AUG-05', 'SH_CLERK', 2400);

UPDATE employees SET salary = salary*1.10 WHERE employee_id = 301;

-- commit (save) the INSERT and UPDATE changes in the databaseCOMMIT;

7.4.2 Rolling Back a TransactionYou can use the SQL ROLLBACK statement to rollback (undo) any changes you made to the database before a COMMIT has been executed.

Example 7–12 shows how to use ROLLBACK to rollback the deletions made to the employees table. Note that the ROLLBACK was issued before a COMMIT was executed.

Example 7–12 Using the ROLLBACK Statement

-- delete a row (record)DELETE FROM employees WHERE last_name = 'Doe';

-- rollback the delete statement because the previous DELETE was incorrectROLLBACK;

-- the following is validSELECT * FROM employees WHERE last_name = 'Doe';

See Also:

■ Oracle Database SQL Language Reference for information on the COMMIT statement.

See Also:

■ Oracle Database SQL Language Reference for information on the ROLLBACK statement.

Page 190: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Pseudocolumns, Sequences, and SQL Functions

7-10 SQL Developer Online Help

7.5 Using Pseudocolumns, Sequences, and SQL FunctionsWith SQL built-in functions you can manipulate character, numeric, and date data in SQL statements. You can also perform operations on a collection of data with the aggregate functions.

Pseudocolumns are built-in values that provide specific information with a query and are similar to functions without arguments. However, functions without arguments typically return the same value for every row in the result set, whereas pseudocolumns typically return a different value for each row.

This topic includes the following topics:

■ Using Pseudocolumns With SQL

■ Using Sequences

■ Using Character Functions

■ Using Arithmetic Operators

■ Using Numeric Functions

■ Using Date Functions

■ Using Aggregate Functions

7.5.1 Using Pseudocolumns With SQLA pseudocolumns is similar to a table column, but is not actually stored in a table. A pseudocolumn returns a value so it is similar to a function without argument. Oracle Database provides several pseudocolumns, such as the ROWNUM, SYSDATE, and USER. The ROWNUM pseudocolumn returns a number indicating the order in which Oracle selects the row in a query. SYSDATE returns the current date and time set for the operating system on which the database resides. USER returns the name of the user name that is currently logged in.

Example 7–13 show the use of the ROWNUM, SYSDATE, and USER pseudocolumns. Note the use of the table DUAL, which is automatically created by Oracle Database for use as a dummy table in SQL statements.

Example 7–13 Using Pseudocolumns

-- the following statement displays the SYSDATE, which is the current system date-- NOW is a column alias for display purposes-- DUAL is a dummy table with one row simply used to complete the SELECT statementSELECT SYSDATE "NOW" FROM DUAL;

-- display the name of the current user, the user name should be HRSELECT USER FROM DUAL;

-- using ROWNUM < 10 limits the number of rows returned to less than 10SELECT employee_id, hire_date, SYSDATE FROM employees WHERE ROWNUM < 10;

See Example 7–18 on page 7-14 for another example of the use of SYSDATE.

See Also:

■ Oracle Database SQL Language Reference for detailed information on SQL functions.

Page 191: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Pseudocolumns, Sequences, and SQL Functions

SQL: Usage Information 7-11

7.5.2 Using SequencesA sequence is a database object similar to a pseudocolumn that generates unique sequential values, often used for primary and unique keys. You can refer to sequence values in SQL statements with the CURRVAL and NEXTVAL pseudocolumns.

To generate a sequence number, you call the sequence using the CURRVAL or NEXTVAL keywords. You must qualify CURRVAL and NEXTVAL with the name of the sequence, such as employees_seq.CURRVAL or employees_seq.NEXTVAL. Before you use CURRVAL for a sequence in your session, you must first initialize the sequence with NEXTVAL.

Example 7–14 shows an example of the use of the employees_seq sequence with the employee_id of the employees table. The employees_seq sequence is part of the HR schema and had been created for use with the employees table. When a sequence is intended to be used with a specific table, it is a good practice to include the name of the table in the sequence name.

Example 7–14 Using Sequences

-- first initialize the employees_seq sequence with NEXTVALSELECT employees_seq.NEXTVAL FROM DUAL;

-- after initializing the sequence, use CURRVAL as the next value in the sequenceINSERT INTO employees VALUES (employees_seq.CURRVAL, 'Belinda', 'Vernal', 'belinda.vernal', '555.111.2342', '15-AUG-05', 'ST_CLERK', 6000, NULL, 124, 50);

-- query the employees table to check the current value of the sequence-- which was inserted used as employee_id in the previous INSERT statementSELECT employee_id, last_name FROM employees WHERE last_name = 'Vernal';

7.5.3 Using Character FunctionsOracle Database provides a set of character functions that you can use in your SQL statements to customize the character values. With character functions, you can perform operations that upper case, lower case, trim blanks from, and concatenate character data.

Example 7–15 shows how to use character functions on character data.

Example 7–15 Using Character Functions

-- you can use the UPPER function to display uppercase data, LOWER for lowercaseSELECT employee_id, UPPER(last_name), LOWER(first_name) FROM employees;

-- you can use CONCAT function to concatenate character dataSELECT CONCAT('Last name: ', last_name) FROM employees;

-- you can use RTRIM and LTRIM to remove spaces from the beginning or end of -- character data. Note the use of concatenation operator ||SELECT employee_id, RTRIM(first_name) || ' ' || LTRIM(last_name) FROM employees;

-- you can TRIM to remove spaces from both the beginning and endSELECT employee_id, TRIM(last_name) || ', ' || TRIM(first_name) FROM employees;

-- you can format the system date (SYSDATE) as a character string -- with various format masks and then display-- the following displays September 21 2005

Page 192: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Pseudocolumns, Sequences, and SQL Functions

7-12 SQL Developer Online Help

SELECT TO_CHAR(SYSDATE, 'fmMonth DD YYYY') "Today" FROM DUAL;

-- the following displays 21-SEP-2005 ADSELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY AD') "Today" FROM DUAL;

7.5.4 Using Arithmetic OperatorsYou can use arithmetic operators to create expressions for calculations on data in tables. The arithmetic operators include:

■ + for addition

■ - for subtraction

■ * for multiplication

■ / for divide

In an arithmetic expression, multiplication and division are evaluated first, then addition and subtraction. When operators have equal precedence, the expression is evaluated left to right. It is best to include parentheses to explicitly determine the order of operators and provide clarity in the expression.

Example 7–16 shows the use of arithmetic operators in expressions with the data in the employees table. Note the use of a column alias to provide a more useful heading for the displayed output.

Example 7–16 Using Arithmetic Operators

-- in the following query the commission is displayed as a percentate instead -- of the decimal that is stored in the databaseSELECT employee_id, (commission_pct * 100) "Commission %" FROM employees;

-- in the following query, the proposed new annual salary is calculated-- for employees who report to the manager with Id 145SELECT employee_id, ((salary + 100) * 12) "Proposed new annual salary" FROM employees WHERE manager_id = 145;

7.5.5 Using Numeric FunctionsOracle Database provides a set of numeric functions that you can use in your SQL statements to manipulate the numeric values. With numeric functions, you can perform operations that upper case, lower case, trim blanks from, and concatenate character data.

Example 7–17 shows how to use numeric functions on numeric data in the employees table.

Example 7–17 Using Numeric Functions

-- you can use the ROUND function to round off numeric data, in this case to-- two decimal placesSELECT employee_id, ROUND(salary/30, 2) "Salary per day" FROM employees;

-- you can use the TRUNC function to truncate numeric data, in this case to-- 0 decimal places; 0 is the default so TRUNC(salary/30) would be sameSELECT employee_id, TRUNC(salary/30, 0) "Salary per day" FROM employees;

Page 193: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Pseudocolumns, Sequences, and SQL Functions

SQL: Usage Information 7-13

7.5.6 Using Date FunctionsOracle Database provides various functions for calculating and converting datetime data.

Performing Date ArithmeticOracle Database provides a number of features to help with date arithmetic, so that you do not need to perform your own calculations on the number of seconds in a day, the number of days in each month, and so on. Some useful features include the following:

■ ADD_MONTHS function, which returns the date plus the specified number of months.

■ MONTHS_BETWEEN function, which returns the number of months between two dates.

■ SYSDATE function, which returns the current date and time set for the operating system on which the database resides.

■ SYSTIMESTAMP function, which returns the system date, including fractional seconds and time zone, of the system on which the database resides.

■ TRUNC function, which when applied to a DATE value, trims off the time portion so that it represents the very beginning of the day (the stroke of midnight). By truncating two DATE values and comparing them, you can determine whether they refer to the same day. You can also use TRUNC along with a GROUP BY clause to produce daily totals.

■ Arithmetic operators such as + and -. For example, SYSDATE-7 refers to 7 days before the current system date.

■ INTERVAL data types, which enable you to represent constants when performing date arithmetic rather than performing your own calculations. For example, you can add or subtract INTERVAL constants from DATE values or subtract two DATE values and compare the result to an INTERVAL.

■ Comparison operators such as >, <, =, and BETWEEN.

Converting Between Datetime TypesOracle Database provides several useful functions that enable you to convert to a from datetime data types. Some useful functions include:

■ EXTRACT, which extracts and returns the value of a specified datetime field from a datetime or interval value expression

■ NUMTODSINTERVAL, which converts a NUMBER or expression that can be implicitly converted to a NUMBER value to an INTERVAL DAY TO SECOND literal

■ NUMTOYMINTERVAL, which converts a NUMBER or expression that can be implicitly converted to a NUMBER value to an INTERVAL YEAR TO MONTH literal

■ TO_DATE, which converts character data to a DATE data type

■ TO_CHAR, which converts DATE data to character data

■ TO_DSINTERVAL, which converts a character string to an INTERVAL DAY TO SECOND value

See Also: Oracle Database SQL Language Reference for details about the date functions

Page 194: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using Pseudocolumns, Sequences, and SQL Functions

7-14 SQL Developer Online Help

■ TO_TIMESTAMP, which converts character data to a value of TIMESTAMP data type

■ TO_TIMESTAMP_TZ, which converts character data to a value of TIMESTAMP WITH TIME ZONE data type

■ TO_YMINTERVAL, which converts a character string to an INTERVAL YEAR TO MONTH type

Example 7–18 shows how to use date functions on date data.

Example 7–18 Using Date Functions

-- in the following statement you can use MONTHS_BETWEEN to compute months-- employed for employees and then truncate the results to the whole month-- note the use of the label (alias) "Months Employed" for the computed columnSELECT employee_id, TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) "Months Employed" FROM employees;

-- the following displays the year hired for each employee idSELECT employee_id, EXTRACT(YEAR FROM hire_date) "Year Hired" FROM employees;

Example 7–19 shows how to use date functions with format masks.

Example 7–19 Using Date Functions With Format Masks

-- use TO_DATE with a format mask to display or enter dates differently than the -- current default date format-- the following displays 1998 with the 'DD-MON-RR' format maskSELECT TO_CHAR(TO_DATE('27-OCT-98', 'DD-MON-RR') ,'YYYY') "Year" FROM DUAL;-- note that 'YY' in a format mask denotes the year in the current century-- the following displays 2098 with the 'DD-MON-YY' format maskSELECT TO_CHAR(TO_DATE('27-OCT-98', 'DD-MON-YY') ,'YYYY') "Year" FROM DUAL;

-- the following displays the date and time with a datetime format maskSELECT TO_TIMESTAMP ('10-Sep-05 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF') FROM DUAL;

-- the following displays the system date and time with a format maskSELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "Now" FROM DUAL;

7.5.7 Using Aggregate FunctionsGroup functions operate on sets of rows to give one result per group. These sets may comprise the entire table or the table split into groups.

Example 7–18 shows how to use aggregate functions on collections of data in the database. Aggregate functions include COUNT, MAX, MIN, and SUM. The GROUP BY clause is used to select groups of rows by a specified expression and returns one row of summary information for each group.

Example 7–20 Using Aggregate Functions

-- you can use COUNT to count the employees with manager 122-- note the use of a column alias Employee CountSELECT COUNT(*) "Employee Count" FROM employees WHERE manager_id = 122;

-- count the employees grouped by manager, also sort the groupsSELECT COUNT(*) "Employee Count", manager_id FROM employees GROUP BY manager_id ORDER BY manager_id;

Page 195: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL Data Definition Language Statements

SQL: Usage Information 7-15

-- you can use MIN to find the minimum salary for employees with manager 122SELECT MIN(salary) FROM employees WHERE manager_id = 122;

-- this computes the minimum and maximum salary by job_id groups-- the job_ids groups are sorted in alphabetical orderSELECT MIN(salary), MAX(salary), job_id FROM employees GROUP BY job_id ORDER BY job_id;

7.6 Using SQL Data Definition Language StatementsData definition language (DDL) statements include CREATE, ALTER, and DROP for defining database objects. When managing database objects, SQL Developer provides a simple and easy-to-use interface that can be utilized instead of SQL DDL statements.

In this guide, some basic SQL DDL statements are used in the code examples and a brief description of some DDL statements are discussed here.

This topic includes the following topics:

■ Creating a Table With SQL

■ Creating and Modifying an Index With SQL

■ Creating and Modifying a Constraint With SQL

■ Altering a Table With SQL

■ Dropping a Table With SQL

■ Creating and Dropping a Sequence

■ Creating and Dropping a Synonym

7.6.1 Creating a Table With SQLTo create a database object, such as a table, use the SQL CREATE statement as shown in Example 7–21. When you create a table, you need to provide data types for each column. For more information about tables, see Managing Tables.

Example 7–21 Creating a Simple Table

-- create a simple table for keeping track of birthdaysCREATE TABLE my_birthdays ( first_name VARCHAR2(20), last_name VARCHAR2(25), bday_date DATE );

Optionally, you can provide constraints as shown inExample 7–22. The use of constrains is discussed in Ensuring Data Integrity With Constraints.

Example 7–22 Creating a Table With Constraints

-- create a table similar to the employees table in the HR schemaCREATE TABLE my_employees ( employee_id NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(25) CONSTRAINT my_emp_last_name_nn NOT NULL, email VARCHAR2(25) CONSTRAINT my_emp_email_nn NOT NULL, phone_number VARCHAR2(20),

Page 196: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL Data Definition Language Statements

7-16 SQL Developer Online Help

hire_date DATE DEFAULT SYSDATE CONSTRAINT my_emp_hire_date_nn NOT NULL, job_id VARCHAR2(10) CONSTRAINT my_emp_job_nn NOT NULL, salary NUMBER(8,2) CONSTRAINT emy_mp_salary_nn NOT NULL, commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4), CONSTRAINT my_emp_salary_min CHECK (salary > 0), CONSTRAINT my_emp_email_uk UNIQUE (email) );

7.6.2 Creating and Modifying an Index With SQLTo create, modify, or drop an index, use the SQL CREATE, ALTER, or DROP INDEX statement as shown in Example 7–23.

Example 7–23 Creating, Modifying, and Dropping an Index

-- create a new index on the employees table using the email columnCREATE INDEX email_ix ON employees (email);

-- disable the indexALTER INDEX email_ix RENAME TO my_email_ix;

-- drop the indexDROP INDEX my_email_ix;

-- create an index on a single column to make queries faster on that columnCREATE INDEX emp_last_name_ix ON employees (last_name);DROP INDEX emp_last_name_ix;

-- create an index on two columns to make queries faster on the first column-- or both columnsCREATE INDEX emp_mgr_id_ix ON employees (employee_id, manager_id);DROP INDEX emp_mgr_id_ix;

-- a function-based index precalculates the result and speeds up queries that-- use the function for searching or sorting, in this case UPPER(last_name)CREATE INDEX emp_upper_last_name_ix ON employees (UPPER(last_name));DROP INDEX emp_upper_last_name_ix;

7.6.3 Creating and Modifying a Constraint With SQLTo add or a modify a constraint on a table, use the SQL ALTER statement as shown in Example 7–24.

Example 7–24 Creating and Altering a Constraint

-- add a constraint a new constraintALTER TABLE my_employees ADD CONSTRAINT ...

-- remove the constraint on email in the my_employees tableALTER TABLE my_employees DROP UNIQUE (email);

Page 197: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL Data Definition Language Statements

SQL: Usage Information 7-17

7.6.4 Altering a Table With SQLTo alter a database object, such as a table, use the SQL ALTER statement as shown in Example 7–25.

Example 7–25 Altering a Table

-- add a new column to my_birthdaysALTER TABLE my_birthdays ADD (age NUMBER(3));

-- rename the my_employees tableALTER TABLE my_employees RENAME to temp_employees;

7.6.5 Dropping a Table With SQLTo drop (remove completely) a table from the database use the SQL DROP statement as shown inExample 7–26. Be very careful when using the DROP statement to remove database objects.

If you want to delete the rows in the table and keep the table, use the DELETE statement. See "Deleting Data With the DELETE Statement" on page 7-8.

Example 7–26 Dropping a Table

-- drop tables from the database-- use caution when use the DROP statement!DROP TABLE my_birthdays;DROP TABLE temp_employees;

7.6.6 Creating and Dropping a SequenceExample 7–27 creates a sequence that can be used with the employees table. The sequence could also be used with other tables. For more information on sequences, see Managing Sequences.

Example 7–27 Creating a Sequence

-- create a new sequence to use with the employees tableCREATE SEQUENCE new_employees_seq START WITH 1000 INCREMENT BY 1;

-- to use the sequence, first initialize the sequence with NEXTVALSELECT new_employees_seq.NEXTVAL FROM DUAL;

-- after initializing the sequence, use CURRVAL as the next value in the sequenceINSERT INTO employees VALUES (new_employees_seq.CURRVAL, 'Pilar', 'Valdivia', 'pilar.valdivia', '555.111.3333', '01-SEP-05', 'AC_MGR', 9100, .1, 101, 110);

-- query the employees table to check the current value of the sequence-- which was inserted used as employee_id in the previous INSERT statementSELECT employee_id, last_name FROM employees WHERE last_name = 'Valdivia';

Example 7–28 drops the sequence that you previously created.

Page 198: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL Data Definition Language Statements

7-18 SQL Developer Online Help

Example 7–28 Dropping a Sequence

-- drop the sequenceDROP SEQUENCE new_employees_seq;

7.6.7 Creating and Dropping a SynonymExample 7–29 creates a synonym that is alias for the employees table. For more information on synonyms, see Managing Synonyms.

Example 7–29 Creating a Synonym

-- create a synonym for the employees tableCREATE SYNONYM emps for HR.employees;

-- query the employees table using the emps synonymSELECT employee_id, last_name FROM emps WHERE employee_id < 105;

Example 7–30 drops a synonym.

Example 7–30 Dropping a Synonym

-- drop the synonymDROP SYNONYM emps;

Page 199: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

PL/SQL: Usage Information 8-1

8PL/SQL: Usage Information

The topic discusses the development with PL/SQL. It includes the following topics:

■ Overview of PL/SQL on page 8-1

■ Entering and Executing PL/SQL Code on page 8-2

■ Utilizing the Main Features of PL/SQL on page 8-2

■ Handling PL/SQL Errors on page 8-21

8.1 Overview of PL/SQLPL/SQL is Oracle's procedural language extension to SQL. It provides a server-side, stored procedural language that is easy-to-use, seamless with SQL, robust, portable, and secure.

The PL/SQL compiler and interpreter are embedded in Oracle Database, providing developers with a consistent and leveraged development model on both the client and the server side. In addition, PL/SQL stored subprograms can be called from Oracle clients.

PL/SQL enables you to mix SQL statements with procedural constructs. With PL/SQL, you can create and run PL/SQL program units such as procedures, functions, and packages. PL/SQL program units generally are categorized as anonymous blocks, stored subprograms, and packages.

The basic units (procedures, functions, and anonymous blocks) that make up a PL/SQL program can be nested inside one another.

You can place declarations close to where they are used, such as inside a large subprogram. The declarations are local to the block and cease to exist when the block completes, helping to avoid cluttered namespaces for variables and procedures.

See Also:

■ Oracle Database PL/SQL Language Reference for detailed information about PL/SQL.

■ Oracle Database PL/SQL Packages and Types Reference for information on packages supplied by Oracle.

■ Oracle Database Advanced Application Developer's Guide for information on dynamic SQL.

■ Oracle Database Advanced Application Developer's Guide for information on using PL/SQL to develop Web applications.

Page 200: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Entering and Executing PL/SQL Code

8-2 SQL Developer Online Help

You can nest blocks in the executable and exception-handling parts of a PL/SQL block or subprogram, but not in the declarative part. You can define local subprograms in the declarative part of any block. You can call local subprograms only from the block in which they are defined.

■ Anonymous block

An anonymous block is a PL/SQL block that appears in your application and is not named or stored in the database. In many applications, PL/SQL blocks can appear wherever SQL statements can appear. A PL/SQL block groups related declarations and statements.

■ Stored or standalone subprogram

A stored or standalone subprogram is a PL/SQL block that Oracle stores in the database and can be called by name from an application. Subprograms can be procedures or functions; the difference is that functions return a value when executed. When you create a stored subprogram, Oracle parses the subprogram and stores its parsed representation in the database. See Subprograms and Packages: Usage Information.

■ Package

A package is a group of subprograms and variable definitions that Oracle stores in the database. Subprograms and variables in packages can be called from other packages or subprograms. See Subprograms and Packages: Usage Information.

8.2 Entering and Executing PL/SQL CodePL/SQL code can be entered and executed from the SQL Workshop or the SQL*Plus command line.

In the SQL Workshop, you can save your SQL statements as a script file that can be run as a SQL script with SQL*Plus.

If you use SQL*Plus, simply type in each line of code at the SQL prompt. For information on using SQL*Plus, see SQL*Plus: Usage Information.

You can create a text file of the PL/SQL code and run that as a SQL script. Using a script makes correcting mistakes much easier because you only need to make the necessary updates to correct the problem rather than retyping all the PL/SQL code. For information on running SQL scripts from SQL*Plus, see Running Scripts From SQL*Plus.

8.3 Utilizing the Main Features of PL/SQLPL/SQL combines the data-manipulating power of SQL with the processing power of procedural languages. You can control program flow with statements like IF and LOOP. As with other procedural programming languages, you can declare variables, define procedures and functions, and trap runtime errors.

PL/SQL enables you to break complex problems down into easily understandable procedural code, and reuse this code across multiple applications. When a problem can be solved through plain SQL, you can issue SQL commands directly inside your PL/SQL programs, without learning new APIs. PL/SQL data types correspond with SQL column types, making it easy to interchange PL/SQL variables with data inside a table.

■ Using PL/SQL Block Structure

■ Using Comments

Page 201: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-3

■ Declaring Variables and Constants

■ Using Identifiers in PL/SQL

■ Assigning Values to a Variable With the Assignment Operator

■ Using Literals

■ Declaring and Assigning Variables With DEFAULT or NOT NULL

■ Assigning Values to a Variable With SELECT INTO

■ Inputting and Outputting Data with PL/SQL

■ Using %ROWTYPE and %TYPE Attributes to Declare Data Types

■ Using PL/SQL Control Structures

■ Using Local PL/SQL Subprograms in PL/SQL Blocks

■ Working With PL/SQL Data Structures

■ Processing Queries with PL/SQL

■ Using Dynamic SQL in PL/SQL

■ Using Bind Variables

8.3.1 Using PL/SQL Block StructureAs Example 8–1 shows, a PL/SQL block has three basic parts: a declarative part (DECLARE), an executable part (BEGIN .. END), and an exception-handling (EXCEPTION) part that handles error conditions. For a discussion of exception handling, see "Handling PL/SQL Errors" on page 8-21.

Only the executable part is required. The optional declarative part is written first, where you define types, variables, and similar items. These items are manipulated in the executable part. Exceptions raised during execution can be dealt with in the exception-handling part.

Note the comments that are added to the PL/SQL code. See "Using Comments" on page 8-4. Also, not the use of DBMS_OUTPUT.PUT_LINE to display output. See "Inputting and Outputting Data with PL/SQL" on page 8-9.

Example 8–1 Simple PL/SQL Block

-- the following is an optional declarative partDECLARE monthly_salary NUMBER(6); number_of_days_worked NUMBER(2); pay_per_day NUMBER(6,2);

-- the following is the executable part, from BEGIN to ENDBEGIN monthly_salary := 2290; number_of_days_worked := 21; pay_per_day := monthly_salary/number_of_days_worked;

-- the following displays output from the PL/SQL block DBMS_OUTPUT.PUT_LINE('The pay per day is ' || TO_CHAR(pay_per_day));

-- the following is an optional exception part that handles errorsEXCEPTION WHEN ZERO_DIVIDE THEN pay_per_day := 0;

Page 202: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-4 SQL Developer Online Help

END;/

For another example of PL/SQL block structure, see Example 8–8 on page 8-9.

8.3.2 Using CommentsThe PL/SQL compiler ignores comments, but you should not. Adding comments to your program promotes readability and help others understand your code. Generally, you use comments to describe the purpose and use of each code segment. PL/SQL supports single-line and multi-line comment styles.

Single-line comments begin with a double hyphen (--) anywhere on a line and extend to the end of the line. Multi-line comments begin with a slash-asterisk (/*), end with an asterisk-slash (*/), and can span multiple lines. See Example 8–2.

Example 8–2 Using Comments

DECLARE -- Declare variables here. monthly_salary NUMBER(6); -- This is the monthly salary. number_of_days_worked NUMBER(2); -- This is the days in one month. pay_per_day NUMBER(6,2); -- Calculate this value.BEGIN-- First assign values to the variables. monthly_salary := 2290; number_of_days_worked := 21;

-- Now calculate the value on the following line. pay_per_day := monthly_salary/number_of_days_worked;

-- the following displays output from the PL/SQL block DBMS_OUTPUT.PUT_LINE('The pay per day is ' || TO_CHAR(pay_per_day));

EXCEPTION/* This is a simple example of an exeception handler to trap division by zero. In actual practice, it would be best to check whether a variable is zero before using it as a divisor. */ WHEN ZERO_DIVIDE THEN pay_per_day := 0; -- set to 0 if divisor equals 0END;/

While testing or debugging a program, you might want to disable a line of code. The following example shows how you can disable a single line by making it a comment:

-- pay_per_day := monthly_salary/number_of_days_worked;

You can use multi-line comment delimiters to comment-out large sections of code.

8.3.3 Declaring Variables and ConstantsVariables can have any SQL data type, such as VARCHAR2, DATE, or NUMBER, or a PL/SQL-only data type, such as BOOLEAN or PLS_INTEGER. You can also declare nested tables, variable-size arrays (varrays for short), and records using the TABLE, VARRAY, and RECORD composite data types. See "Working With PL/SQL Data Structures" on page 8-17.

Declaring a constant is like declaring a variable except that you must add the keyword CONSTANT and immediately assign a value to the constant. No further assignments to

Page 203: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-5

the constant are allowed. For an example, see avg_days_worked_month in Example 8–3.

For example, assume that you want to declare variables for employee data, such as employee_id to hold 6-digit numbers and active_employee to hold the Boolean value TRUE or FALSE. You declare these and related employee variables and constants as shown in Example 8–3.

Note that there is a semi-colon (;) at the end of each line in the declaration section. Also, note the use of the NULL statement which enables you to execute and test the PL/SQL block.

You can choose any naming convention for variables that is appropriate for your application. For example, you could begin each variable name with the v_ prefix to emphasize that these are variable names.

Example 8–3 Declaring Variables in PL/SQL

DECLARE -- declare the variables in this section last_name VARCHAR2(30); first_name VARCHAR2(25); employee_id NUMBER(6); active_employee BOOLEAN; monthly_salary NUMBER(6); number_of_days_worked NUMBER(2); pay_per_day NUMBER(6,2); avg_days_worked_month CONSTANT NUMBER(2) := 21; -- a constant variableBEGIN NULL; -- NULL statement does nothing, allows this block to executed and testedEND;/

8.3.4 Using Identifiers in PL/SQLYou use identifiers to name PL/SQL program items and units, such as constants, variables, exceptions, and subprograms. An identifier consists of a letter optionally followed by more letters, numerals, dollar signs, underscores, and number signs.

The declaration section in Example 8–4 illustrates some valid identifiers. You can see additional examples of valid identifiers for variable names in Example 8–2 on page 8-4 and Example 8–3 on page 8-5.

Example 8–4 Valid Identifiers for Variables

DECLARE -- all declarations use valid identifiers x NUMBER; t2 NUMBER; phone# VARCHAR2(12); credit_limit NUMBER; oracle$number NUMBER; money$$$tree NUMBER; SN## VARCHAR2(9); try_again BOOLEAN;BEGIN NULL;END;/

See Also: Oracle Database PL/SQL Language Reference for information on data types used with PL/SQL, including the PL/SQL BOOLEAN and PLS_INTEGER data types

Page 204: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-6 SQL Developer Online Help

Characters such as hyphens, slashes, and spaces are not allowed. For example the following identifiers are not allowed:

mine&yours is not allowed because of the ampersanddebit-amount is not allowed because of the hyphenon/off is not allowed because of the slashuser id is not allowed because of the space

You can use upper, lower, or mixed case to write identifiers. PL/SQL is not case sensitive except within string and character literals. Every character, including dollar signs, underscores, and number signs, is significant. If the only difference between identifiers is the case of corresponding letters, PL/SQL considers them the same, as in the following:

lastname is same as LASTNAME and LastNameLastName is the same as lastname and LASTNAMELASTNAME is same as lastname and LastName

The size of an identifier cannot exceed 30 characters. Identifiers should be descriptive. When possible, avoid obscure names such as cpm. Instead, use meaningful names such as cost_per_thousand.

Some identifiers, called reserved words or keywords, have a special syntactic meaning to PL/SQL. For example, the words BEGIN and END are reserved. Often, reserved words and keywords are written in upper case for readability. Neither reserved words or keywords should be used as identifiers and the use can cause compilation errors.

8.3.5 Assigning Values to a Variable With the Assignment OperatorYou can assign values to a variable in several ways. One way uses the assignment operator (:=), a colon followed by an equal sign, as shown in Example 8–5. You place the variable to the left of the operator and an expression, including function calls, to the right. Note that you can assign a value to a variable when it is declared.

Example 8–5 Assigning Values to Variables With the Assignment Operator

DECLARE -- declare and assiging variables wages NUMBER(6,2); hours_worked NUMBER := 40; hourly_salary NUMBER := 22.50; bonus NUMBER := 150; country VARCHAR2(128); counter NUMBER := 0; done BOOLEAN := FALSE; valid_id BOOLEAN;BEGIN wages := (hours_worked * hourly_salary) + bonus; -- compute wages country := 'France'; -- assign a string literal country := UPPER('Canada'); -- assign an uppercase string literal done := (counter > 100); -- assign a BOOLEAN, in this case FALSE valid_id := TRUE; -- assign a BOOLEANEND;/

See Also: Oracle Database PL/SQL Language Reference for information on PL/SQL reserved words and keywords

Page 205: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-7

8.3.6 Using LiteralsA literal is an explicit numeric, character, string, or BOOLEAN value not represented by an identifier. For example, 147 is a numeric literal and FALSE is a BOOLEAN literal.

Numeric LiteralsTwo kinds of numeric literals can be used in arithmetic expressions: integers and reals. An integer literal is an optionally signed whole number without a decimal point, such as +6. A real literal is an optionally signed whole or fractional number with a decimal point, such as -3.14159. PL/SQL considers a number such as 25. to be real even though it has an integral value.

Numeric literals cannot contain dollar signs or commas, but can be written using scientific notation. Simply suffix the number with an E (or e) followed by an optionally signed integer, such as -9.5e-3. E (or e) stands for times ten to the power of.

Character LiteralsA character literal is an individual character enclosed by single quotes (apostrophes), such as '(' or '7'. Character literals include all the printable characters in the PL/SQL character set: letters, numerals, spaces, and special symbols.

PL/SQL is case sensitive within character literals. For example, PL/SQL considers the character literals 'Z' and 'z' to be different. Also, the character literals '0'..'9' are not equivalent to integer literals but can be used in arithmetic expressions because they are implicitly convertible to integers.

String LiteralsA character value can be represented by an identifier or explicitly written as a string literal, which is a sequence of zero or more characters enclosed by single quotes, such as 'Hello, world!' and '$1,000,000'. All string literals except the null string ('') have data type CHAR.

PL/SQL is case sensitive within string literals. For example, PL/SQL considers the following string literals 'baker' and 'Baker' to be different:

To represent an apostrophe within a string, you can write two single quotes (''), which is not the same as writing a double quote ("). Doubling the quotation marks within a complicated literal, particularly one that represents a SQL statement, can be tricky. You can also define your own delimiter characters for the literal. You choose a character that is not present in the string, and then do not need to escape other single quotation marks inside the literal, such as the following string.

q'!I'm using the exclamation point for a delimiter here.!'

BOOLEAN LiteralsBOOLEAN literals are the predefined values TRUE, FALSE, and NULL. NULL stands for a missing, unknown, or inapplicable value. Remember, BOOLEAN literals are values, not strings. For example, TRUE is no less a value than the number 25.

Datetime LiteralsDatetime literals have various formats depending on the datetime data type, such as '14-SEP-05' or '14-SEP-05 09:24:04 AM'.

Example 8–6 shows some examples of the use of literals.

Page 206: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-8 SQL Developer Online Help

Example 8–6 Using Literals

DECLARE -- declare and assign variables number1 PLS_INTEGER := 32000; -- numeric literal number2 NUMBER(8,3); char1 VARCHAR2(1) := 'x'; -- character literal char2 VARCHAR2(1000); boolean BOOLEAN := TRUE; -- BOOLEAN literal date1 DATE := '11-AUG-2005'; -- DATE literal time1 TIMESTAMP; time2 TIMESTAMP WITH TIME ZONE;BEGIN number2 := 3.125346e3; -- numeric literal number2 := -8300.00; -- numeric literal number2 := -14; -- numeric literal char2 := q'!I'm writing an example string.!'; -- string literal char2 := 'I''m writing an example string.'; -- need two single quotes here time1 := '11-AUG-2005 11:01:01 PM'; -- TIMESTAMP literal time2 := '11-AUG-2005 09:26:56.66 PM +02:00';END;/

8.3.7 Declaring and Assigning Variables With DEFAULT or NOT NULLYou can use the keyword DEFAULT instead of the assignment operator to initialize variables. Use DEFAULT for variables that have a typical value. Use the assignment operator for variables (such as counters and accumulators) that have no typical value. You can also use DEFAULT to initialize subprogram parameters, cursor parameters, and fields in a user-defined record.

Besides assigning an initial value, declarations can impose the NOT NULL constraint so that assigning a NULL raises an error. The NOT NULL constraint must be followed by an initialization clause.

In Example 8–7 the declaration for avg_days_worked_month uses the DEFAULT to assign a value of 21 and the declarations for active_employee and monthly_salary use the NOT NULL constraint.

Example 8–7 Using DEFAULT and NOT NULL

DECLARE -- declare and assign variables last_name VARCHAR2(30); first_name VARCHAR2(25); employee_id NUMBER(6); active_employee BOOLEAN NOT NULL := TRUE; -- value cannot be NULL monthly_salary NUMBER(6) NOT NULL := 2000; -- value cannot be NULL number_of_days_worked NUMBER(2); pay_per_day NUMBER(6,2); employee_count NUMBER(6) := 0; avg_days_worked_month NUMBER(2) DEFAULT 21; -- assign a default valueBEGIN

See Also:

■ Oracle Database SQL Language Reference for information on the syntax for literals and the date and time types.

■ Oracle Database Advanced Application Developer's Guide for examples of performing date and time arithmetic.

■ Oracle Database PL/SQL Language Reference for information on using literals with PL/SQL.

Page 207: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-9

NULL; -- NULL statement does nothing, allows this block to executed and testedEND;/

8.3.8 Assigning Values to a Variable With SELECT INTOAnother way to assign values to a variable is by selecting (or fetching) database values into it. In Example 8–8, 10% of an employee's salary is selected into the bonus variable. Now you can use the bonus variable in another computation or insert its value into a database table.

In the example, DBMS_OUTPUT.PUT_LINE is used to display output from the PL/SQL program. For more information, see "Inputting and Outputting Data with PL/SQL" on page 8-9.

Example 8–8 Assigning Values to Variables by SELECTing INTO

DECLARE -- declare and assign values bonus NUMBER(8,2); emp_id NUMBER(6) := 100; -- declare variable and assign a test valueBEGIN-- retreive a value from the employees table and assign to the bonus variable SELECT salary * 0.10 INTO bonus FROM employees WHERE employee_id = emp_id; DBMS_OUTPUT.PUT_LINE ( 'Employee: ' || TO_CHAR(emp_id) || ' Bonus: ' || TO_CHAR(bonus) ); -- display dataEND;/

8.3.9 Inputting and Outputting Data with PL/SQLMost PL/SQL input and output is through SQL statements, to store data in database tables or query those tables. All other PL/SQL I/O is done through APIs that interact with other programs. For example, the DBMS_OUTPUT package has procedures such as PUT_LINE. To see the result outside of PL/SQL requires another program, such as SQL*Plus, to read and display the data passed to DBMS_OUTPUT. SQL*Plus does not display DBMS_OUTPUT data unless you first issue the SQL*Plus command SET SERVEROUTPUT ON. For information on SQL*Plus SET command, see SQL*Plus SET Commands.

Example 8–9 show the use of DBMS_OUTPUT.PUTLINE. Note the use of SET SERVEROUTPUT ON to enable output.

Example 8–9 Using DBMS_OUTPUT to Display Output

-- enable SERVEROUTPUT in SQL*Plus to display with DBMS_OUTPUT.PUT_LINE-- this enables SERVEROUTPUT for this SQL*Plus session onlySET SERVEROUTPUT ON

DECLARE answer VARCHAR2(20); -- declare a variableBEGIN-- assign a value to a variable answer := 'Maybe';-- use PUT_LINE to display data from the PL/SQL block DBMS_OUTPUT.PUT_LINE( 'The answer is: ' || answer );END;/

Page 208: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-10 SQL Developer Online Help

The DBMS_OUTPUT package is a predefined Oracle package. For information about Oracle supplied packages, see Oracle Product-Specific Packages.

8.3.10 Using %ROWTYPE and %TYPE Attributes to Declare Data TypesAs part of the declaration for each PL/SQL variable, you declare its data type. Usually, this data type is one of the types shared between PL/SQL and SQL, such as NUMBER or VARCHAR2. For easier maintenance of code that interacts with the database, you can also use the special qualifiers %ROWTYPE and %TYPE to declare variables that hold table columns or table rows.

8.3.10.1 Using the %ROWTYPE Attribute to Declare VariablesFor easier maintenance of code that interacts with the database, you can use the %ROWTYPE attribute to declare a variable that represents a row in a table. A PL/SQL record is the data type that stores the same information as a row in a table.

In PL/SQL, records are used to group data. A record consists of a number of related fields in which data values can be stored. The record can store an entire row of data selected from the table or fetched from a cursor or cursor variable. For information on records, see "Using Records" on page 8-18.

Columns in a row and corresponding fields in a record have the same names and data types. In Example 8–10, you declare a record named emp_rec. Its fields have the same names and data types as the columns in the employees table. You use dot notation to reference fields, such as emp_rec.last_name.

In Example 8–10, SELECT is used to store row information from the employees table into the emp_rec record. When you execute the SELECT INTO statement, the value in the first_name column of the employees table is assigned to the first_name field of emp_rec, the value in the last_name column is assigned to the last_name field of emp_rec, and so on.

Example 8–10 Using %ROWTYPE with a Record

DECLARE -- declare variables-- declare record variable that represents a row fetched from the employees table emp_rec employees%ROWTYPE; -- declare variable with %ROWTYPE attributeBEGIN SELECT * INTO emp_rec FROM EMPLOYEES WHERE employee_id = 120; -- retrieve record DBMS_OUTPUT.PUT_LINE('Employee name: ' || emp_rec.first_name || ' ' || emp_rec.last_name); -- displayEND;/

Declaring variables with %ROWTYPE has several advantages. First, you do not need to know the exact data type of the table columns. Second, if you change the database definition of any of the table columns, the data types associated with the %ROWTYPE declaration change accordingly at run time.

See Also:

■ SQL*Plus User's Guide and Reference for information SQL*Plus commands.

■ Oracle Database PL/SQL Packages and Types Reference.for information about Oracle supplied packages.

See Also: Oracle Database PL/SQL Language Reference for information on %ROWTYPE

Page 209: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-11

8.3.10.2 Using the %TYPE Attribute to Declare VariablesThe %TYPE attribute provides the data type of a variable or table column. This is particularly useful when declaring variables that will hold values of a table column. For example, suppose you want to declare variables as the same data type as columns employee_id and last_name in table employees. To declare variables named empid and emplname that have the same data type as the table columns, use dot notation and the %TYPE attribute. See Example 8–11.

Example 8–11 Using %TYPE With Table Columns

DECLARE -- declare variables using %TYPE attribute empid employees.employee_id%TYPE; -- employee_id data type is NUMBER(6) emplname employees.last_name%TYPE; -- last_name data type is VARCHAR2(25)BEGIN empid := 100301; -- this is OK because it fits in NUMBER(6)-- empid := 3018907; -- this is too large and will cause an overflow emplname := 'Patel'; -- this is OK because it fits in VARCHAR2(25) DBMS_OUTPUT.PUT_LINE('Employee Id: ' || empid); -- display data DBMS_OUTPUT.PUT_LINE('Employee name: ' || emplname); -- display dataEND;/

Declaring variables with %TYPE has two advantages. First, you need not know the exact data type of the table columns. Second, if you change the database definition of columns, such as employee_id or last_name, the data types of empid and emplname in Example 8–11 change accordingly at run time.

8.3.11 Using PL/SQL Control StructuresControl structures are the most important PL/SQL extension to SQL. Not only can you use PL/SQL to manipulate Oracle data, you can process the data using conditional, iterative, and sequential flow-of-control statements such as IF-THEN-ELSE, CASE, FOR-LOOP, WHILE-LOOP, EXIT-WHEN, and GOTO.

8.3.11.1 Conditional Control With IF-THENOften, it is necessary to take alternative actions depending on circumstances. The IF-THEN statement enables you to execute a sequence of statements conditionally. The forms of the statement can be IF-THEN, IF-THEN-ELSE, or IF-THEN-ELSEIF-ELSE. The IF clause checks a condition, the THEN clause defines what to do if the condition is true and the ELSE clause defines what to do if the condition is false or null. Example 8–12 shows a simple use of the IF-THEN statement.

Example 8–12 Using a Simple IF-THEN Statement

DECLARE sales NUMBER(8,2) := 10100; quota NUMBER(8,2) := 10000; bonus NUMBER(6,2); emp_id NUMBER(6) := 120; -- use employee 120 for testingBEGIN IF sales > (quota + 200) THEN bonus := (sales - quota)/4; UPDATE employees SET salary = salary + bonus WHERE employee_id = emp_id; END IF;

See Also: Oracle Database PL/SQL Language Reference for information on %TYPE

Page 210: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-12 SQL Developer Online Help

END;/

Example 8–13 shows the use of IF-THEN-ELSEIF-ELSE to determine the salary raise an employee receives based on the hire date of the employee.

Example 8–13 Using the IF-THEN-ELSEIF Statement

DECLARE bonus NUMBER(6,2); emp_id NUMBER(6) := 120; hire_date DATE;BEGIN SELECT hire_date INTO hire_date FROM employees WHERE employee_id = 120; IF hire_date > TO_DATE('01-JAN-98') THEN bonus := 500; ELSIF hire_date > TO_DATE('01-JAN-96') THEN bonus := 1000; ELSE bonus := 1500; END IF; UPDATE employees SET salary = salary + bonus WHERE employee_id = emp_id;END;/

8.3.11.2 Conditional Control With the CASE StatementTo choose among several values or courses of action, you can use CASE constructs. The CASE expression evaluates a condition and returns a value for each case. The case statement evaluates a condition and performs an action, such as an entire PL/SQL block, for each case. When possible, rewrite lengthy IF-THEN-ELSIF statements as CASE statements because the CASE statement is more readable and more efficient.

Example 8–14 shows a simple CASE statement.

Example 8–14 Using the CASE-WHEN Statement

DECLARE grade CHAR(1);BEGIN grade := 'B'; CASE grade WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Good'); WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair'); WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor'); ELSE DBMS_OUTPUT.PUT_LINE('No such grade'); END CASE;END;/

Example 8–15 determines the salary raise an employee receives based on the current salary of the employee and the job Id. This complex example combines the CASE expression with IF-THEN-ELSE statements.

Example 8–15 Using the IF-THEN_ELSE and CASE Statement

DECLARE -- declare variables jobid employees.job_id%TYPE;

Page 211: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-13

empid employees.employee_id%TYPE := 115; sal employees.salary%TYPE; sal_raise NUMBER(3,2);BEGIN-- retrieve data from employees and assign to variables jobid and sal SELECT job_id, salary INTO jobid, sal from employees WHERE employee_id = empid; CASE -- check for conditions WHEN jobid = 'PU_CLERK' THEN IF sal < 3000 THEN sal_raise := .08; ELSE sal_raise := .07; END IF; WHEN jobid = 'SH_CLERK' THEN IF sal < 4000 THEN sal_raise := .06; ELSE sal_raise := .05; END IF; WHEN jobid = 'ST_CLERK' THEN IF sal < 3500 THEN sal_raise := .04; ELSE sal_raise := .03; END IF; ELSE BEGIN-- if no conditions met, then the following DBMS_OUTPUT.PUT_LINE('No raise for this job: ' || jobid); END; END CASE; UPDATE employees SET salary = salary + salary * sal_raise WHERE employee_id = empid; -- update a record in the employees table COMMIT;END;/

A sequence of statements that uses query results to select alternative actions is common in database applications. Another common sequence inserts or deletes a row only if an associated entry is found in another table. You can bundle these common sequences into a PL/SQL block using conditional logic.

8.3.11.3 Iterative Control With LOOPsLOOP statements enable you to execute a sequence of statements multiple times. You place the keyword LOOP before the first statement in the sequence and the keywords END LOOP after the last statement in the sequence.

The FOR-LOOP statement enables you to specify a range of integers, then execute a sequence of statements once for each integer in the range. In Example 8–16 the loop displays the number and the square of the number for numbers 1 to 10. inserts 100 numbers, square roots, squares, and the sum of squares into a database table:

Example 8–16 Using the FOR-LOOP

BEGIN-- use a FOR loop to process a series of numbers FOR i in 1..10 LOOP DBMS_OUTPUT.PUT_LINE('Number: ' || TO_CHAR(i) || ' Square: ' || TO_CHAR(i*i)); END LOOP;END;/

The WHILE-LOOP statement associates a condition with a sequence of statements. Before each iteration of the loop, the condition is evaluated. If the condition is true, the

Page 212: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-14 SQL Developer Online Help

sequence of statements is executed, then control resumes at the top of the loop. If the condition is false or null, the loop is bypassed and control passes to the next statement.

In Example 8–17, you find the first employee who has a salary over $15000 and is higher in the chain of command than employee 120:

Example 8–17 Using WHILE-LOOP for Control

-- create a temporary table for this exampleCREATE TABLE temp (tempid NUMBER(6), tempsal NUMBER(8,2), tempname VARCHAR2(25));DECLARE -- declare variables sal employees.salary%TYPE := 0; mgr_id employees.manager_id%TYPE; lname employees.last_name%TYPE; starting_empid employees.employee_id%TYPE := 120;BEGIN SELECT manager_id INTO mgr_id FROM employees WHERE employee_id = starting_empid; -- retrieve data from employees-- use WHILE LOOP to process data WHILE sal <= 15000 LOOP -- loop until sal > 15000 SELECT salary, manager_id, last_name INTO sal, mgr_id, lname FROM employees WHERE employee_id = mgr_id; END LOOP; INSERT INTO temp VALUES (NULL, sal, lname); -- insert NULL for tempid in table COMMIT;EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO temp VALUES (NULL, NULL, 'Not found'); -- insert NULLs COMMIT;END;/-- display rows in table tempSELECT * FROM temp;-- drop temporary tableDROP TABLE temp;

The EXIT-WHEN statement enables you to complete a loop if further processing is impossible or undesirable. When the EXIT statement is encountered, the condition in the WHEN clause is evaluated. If the condition is true, the loop completes and control passes to the next statement. In Example 8–18, the loop completes when the value of total exceeds 25,000:

Example 8–18 Using the EXIT-WHEN Statement

DECLARE -- declare and assign values to variables total NUMBER(9) := 0; counter NUMBER(6) := 0;BEGIN LOOP counter := counter + 1; -- increment counter variable total := total + counter * counter; -- compute total -- exit loop when condition is true EXIT WHEN total > 25000; -- LOOP until condition is met END LOOP; DBMS_OUTPUT.PUT_LINE('Counter: ' || TO_CHAR(counter) || ' Total: ' || TO_CHAR(total)); -- display dataEND;/

Page 213: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-15

8.3.11.4 Sequential Control With GOTOThe GOTO statement enables you to branch to a label unconditionally. The label, an undeclared identifier enclosed by double angle brackets, must precede an executable statement or a PL/SQL block. When executed, the GOTO statement transfers control to the labeled statement or block, as shown in Example 8–19.

Example 8–19 Using the GOTO Statement

DECLARE -- declare variables p VARCHAR2(30); n PLS_INTEGER := 37; -- test any integer > 2 for prime, here 37BEGIN-- loop through divisors to determine if a prime number FOR j in 2..ROUND(SQRT(n)) LOOP IF n MOD j = 0 THEN -- test for prime p := ' is NOT a prime number'; -- not a prime number GOTO print_now; END IF; END LOOP; p := ' is a prime number';<<print_now>> DBMS_OUTPUT.PUT_LINE(TO_CHAR(n) || p); -- display dataEND;/

8.3.12 Using Local PL/SQL Subprograms in PL/SQL BlocksSubprograms are named PL/SQL blocks that can be called with a set of parameters from inside a PL/SQL block. PL/SQL has two types of subprograms: procedures and functions.

Example 8–20 is an example of a declaration of a PL/SQL procedure in a PL/SQL block. Note that the v1 and v2 variables are declared as IN OUT parameters to a subprogram. An IN OUT parameter passes an initial value that is read inside a subprogram and then returns a value that has been updated in the subprogram.

Example 8–20 Declaring a Procedure With IN OUT Parameters

DECLARE -- declare variables and subprograms fname VARCHAR2(20) := 'randall'; lname VARCHAR2(25) := 'dexter'; PROCEDURE upper_name ( v1 IN OUT VARCHAR2, v2 IN OUT VARCHAR2) AS BEGIN v1 := UPPER(v1); -- change the string to uppercase v2 := UPPER(v2); -- change the string to uppercase END;BEGIN DBMS_OUTPUT.PUT_LINE(fname || ' ' || lname ); -- display initial values upper_name (fname, lname); -- call the procedure with parameters DBMS_OUTPUT.PUT_LINE(fname || ' ' || lname ); -- display new valuesEND;/

Example 8–21 is an example of a declaration of a PL/SQL function in a PL/SQL block. Note that the value returned by the function is used directly in the DBMS_OUTPUT.PUT_LINE statement. Note that the v1 and v2 variables are declared as IN parameters to a subprogram. An IN parameter passes an initial value that is read

Page 214: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-16 SQL Developer Online Help

inside a subprogram. Any update to the value of the parameter inside the subprogram is not accessible outside the subprogram.

Example 8–21 Declaring a Function With IN Parameters

DECLARE -- declare variables and subprograms fname VARCHAR2(20) := 'randall'; lname VARCHAR2(25) := 'dexter'; FUNCTION upper_name ( v1 IN VARCHAR2, v2 IN VARCHAR2) RETURN VARCHAR2 AS v3 VARCHAR2(45); -- this variable is local to the function BEGIN-- build a string that will be returned as the function value v3 := v1 || ' + ' || v2 || ' = ' || UPPER(v1) || ' ' || UPPER(v2); RETURN v3; -- return the value of v3 END;BEGIN-- call the function and display results DBMS_OUTPUT.PUT_LINE(upper_name (fname, lname)); END;/

In Example 8–22, both a variable and a numeric literal are passed as a parameter to a more complex procedure.

Example 8–22 Declaring a Complex Procedure in a PL/SQL Block

DECLARE -- declare variables and subprograms empid NUMBER; PROCEDURE avg_min_max_sal (empid IN NUMBER) IS jobid VARCHAR2(10); avg_sal NUMBER; min_sal NUMBER; max_sal NUMBER; BEGIN-- determine the job Id for the employee SELECT job_id INTO jobid FROM employees WHERE employee_id = empid;-- calculate the average, minimum, and maximum salaries for that job Id SELECT AVG(salary), MIN(salary), MAX(salary) INTO avg_sal, min_sal, max_sal FROM employees WHERE job_id = jobid;-- display data DBMS_OUTPUT.PUT_LINE ('Employee Id: ' || empid || ' Job Id: ' || jobid); DBMS_OUTPUT.PUT_LINE ('The average salary for job Id: ' || jobid || ' is ' || TO_CHAR(avg_sal)); DBMS_OUTPUT.PUT_LINE ('The minimum salary for job Id: ' || jobid || ' is ' || TO_CHAR(min_sal)); DBMS_OUTPUT.PUT_LINE ('The maximum salary for job Id: ' || jobid || ' is ' || TO_CHAR(max_sal)); END avg_min_max_sal;BEGIN-- call the procedure with several employee Ids empid := 125; avg_min_max_sal(empid); avg_min_max_sal(112);END;/

Subprograms can also be declared in packages. You can create subprograms that are stored in the database. These subprograms can be called from other subprograms, packages, and SQL statements. See Subprograms and Packages: Usage Information.

Page 215: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-17

8.3.13 Working With PL/SQL Data StructuresData structure are composite data types that enable you to work with the essential properties of data without being too involved with details. After you design a data structure, you can focus on designing algorithms that manipulate the data structure.

8.3.13.1 Using CursorsA cursor is a name for a specific private SQL area in which information for processing the specific statement is kept. PL/SQL uses both implicit and explicit cursors. PL/SQL implicitly declares a cursor for all SQL data manipulation statements on a set of rows, including queries that return only one row. You can explicitly declare a cursor for one row, as shown in Example 8–10 on page 8-10 declares an explicit cursor.

For queries that return more than one row, you can explicitly declare a cursor to process the rows individually. See Example 8–23.

Example 8–23 Fetching With a Cursor

DECLARE -- declare variables and cursors jobid employees.job_id%TYPE; -- variable for job_id lastname employees.last_name%TYPE; -- variable for last_name CURSOR c1 IS SELECT last_name, job_id FROM employees WHERE job_id LIKE '%CLERK'; employees employees%ROWTYPE; -- record variable for row CURSOR c2 is SELECT * FROM employees WHERE job_id LIKE '%MAN' OR job_id LIKE '%MGR';BEGIN OPEN c1; -- open the cursor before fetching LOOP FETCH c1 INTO lastname, jobid; -- fetches 2 columns into variables EXIT WHEN c1%NOTFOUND; DBMS_OUTPUT.PUT_LINE( RPAD(lastname, 25, ' ') || jobid ); END LOOP; CLOSE c1; DBMS_OUTPUT.PUT_LINE( '-------------------------------------' ); OPEN c2; LOOP FETCH c2 INTO employees; -- fetches entire row into the employees record EXIT WHEN c2%NOTFOUND; DBMS_OUTPUT.PUT_LINE( RPAD(employees.last_name, 25, ' ') || employees.job_id ); END LOOP; CLOSE c2;END;/

In Example 8–23, LIKE is used to specify the records to return with the query. For information on LIKE, see Restricting Data Using the WHERE Clause.

8.3.13.2 Using CollectionsPL/SQL collection types enable you to declare high-level data types similar to arrays, sets, and hash tables found in other languages. In PL/SQL, array types are known as varrays (short for variable-size arrays), set types are known as nested tables, and hash table types are known as associative arrays. Each kind of collection is an ordered group of elements, all of the same type. Each element has a unique subscript that

See Also: Oracle Database PL/SQL Language Reference for information on managing cursors with PL/SQL

Page 216: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-18 SQL Developer Online Help

determines its position in the collection. When declaring collections, you use a TYPE definition.

To reference an element, use subscript notation with parentheses, as shown in Example 8–24.

Example 8–24 Using a PL/SQL Collection Type

DECLARE -- declare variables TYPE jobids_array IS VARRAY(12) OF VARCHAR2(10); -- declare VARRAY jobids jobids_array; -- declare a variable of type jobids_array howmany NUMBER; -- declare a variable to hold employee countBEGIN -- initialize the arrary with some job Id values jobids := jobids_array('AC_ACCOUNT', 'AC_MGR', 'AD_ASST', 'AD_PRES', 'AD_VP', 'FI_ACCOUNT', 'FI_MGR', 'HR_REP', 'IT_PROG', 'SH_CLERK', 'ST_CLERK', 'ST_MAN'); FOR i IN jobids.FIRST..jobids.LAST LOOP -- loop through all the varray values -- determine the number of employees for each job Id in the array SELECT COUNT(*) INTO howmany FROM employees WHERE job_id = jobids(i); DBMS_OUTPUT.PUT_LINE ( 'Job Id: ' || jobids(i) || ' Number of employees: ' || TO_CHAR(howmany)); END LOOP;END;/

Collections can be passed as parameters, so that subprograms can process arbitrary numbers of elements.You can use collections to move data into and out of database tables using high-performance language features known as bulk SQL.

8.3.13.3 Using RecordsRecords are composite data structures whose fields can have different data types. You can use records to hold related items and pass them to subprograms with a single parameter. When declaring records, you use the TYPE definition.

Example 8–25 shows how are records are declared.

Example 8–25 Declaring a Record Type

DECLARE -- declare RECORD type variables TYPE timerec IS RECORD (hours SMALLINT, minutes SMALLINT); TYPE meetin_typ IS RECORD ( date_held DATE, duration timerec, -- nested record location VARCHAR2(20), purpose VARCHAR2(50));BEGIN-- NULL does nothing but allows unit to be compiled and tested NULL;END;/

You can use the %ROWTYPE attribute to declare a record that represents a row in a table or a row from a query result set, without specifying the names and types for the fields.

See Also:

■ Oracle Database PL/SQL Language Reference for information on PL/SQL collections.

Page 217: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

PL/SQL: Usage Information 8-19

When using %ROWTYPE, the record type definition is implied and the TYPE keyword is not necessary, as shown in Example 8–26.

Example 8–26 Using %ROWTYPE with a Cursor

DECLARE -- declare variables CURSOR c1 IS SELECT * FROM employees WHERE employee_id = 120; -- declare cursor-- declare record variable that represents a row fetched from the employees table employee_rec c1%ROWTYPE; -- declare variable with %ROWTYPE attributeBEGIN-- open the explicit cursor c1 and use it to fetch data into employee_rec OPEN c1; FETCH c1 INTO employee_rec; -- retrieve record DBMS_OUTPUT.PUT_LINE('Employee name: ' || employee_rec.last_name); -- displayEND;/

8.3.14 Processing Queries with PL/SQLProcessing a SQL query with PL/SQL is like processing files with other languages. This process includes opening a file, reading the file contents, processing each line, then closing the file. In the same way, a PL/SQL program issues a query and processes the rows from the result set as shown in Example 8–27.

Example 8–27 Processing Query Results in a LOOP

BEGIN-- use values from SELECT for FOR LOOP processing FOR someone IN (SELECT * FROM employees WHERE employee_id < 120 ) LOOP DBMS_OUTPUT.PUT_LINE('First name = ' || someone.first_name || ', Last name = ' || someone.last_name); END LOOP;END;/

You can use a simple loop like the one shown here, or you can control the process precisely by using individual statements to perform the query, retrieve data, and finish processing.

8.3.15 Using Dynamic SQL in PL/SQLPL/SQL supports both dynamic and static SQL. Dynamic SQL enables you to build SQL statements dynamically at runtime while static SQL statements are known in advance. You can create more general purpose, flexible applications by using dynamic SQL because the full text of a SQL statement may be unknown at compilation. For additional information about dynamic SQL, see Oracle Database Advanced Application Developer's Guide.

To process most dynamic SQL statements, you use the EXECUTE IMMEDIATE statement. To process a multi-row query (SELECT statement), you use the OPEN-FOR, FETCH, and CLOSE statements.

See Also:

■ Oracle Database PL/SQL Language Reference for information on PL/SQL records.

Page 218: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Utilizing the Main Features of PL/SQL

8-20 SQL Developer Online Help

Example 8–28 illustrates several uses of dynamic SQL.

Example 8–28 Examples of Dynamic SQL

-- create a standalone procedureCREATE OR REPLACE PROCEDURE raise_emp_salary (column_value NUMBER, emp_column VARCHAR2, amount NUMBER) IS column VARCHAR2(30); sql_stmt VARCHAR2(200);BEGIN-- determine if a valid column name has been given as input SELECT COLUMN_NAME INTO column FROM USER_TAB_COLS WHERE TABLE_NAME = 'EMPLOYEES' AND COLUMN_NAME = emp_column; sql_stmt := 'UPDATE employees SET salary = salary + :1 WHERE ' || column || ' = :2'; EXECUTE IMMEDIATE sql_stmt USING amount, column_value; IF SQL%ROWCOUNT > 0 THEN DBMS_OUTPUT.PUT_LINE('Salaries have been updated for: ' || emp_column || ' = ' || column_value); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('Invalid Column: ' || emp_column);END raise_emp_salary;/

DECLARE plsql_block VARCHAR2(500);BEGIN-- note the semi-colons (;) inside the quotes '...' plsql_block := 'BEGIN raise_emp_salary(:cvalue, :cname, :amt); END;'; EXECUTE IMMEDIATE plsql_block USING 110, 'DEPARTMENT_ID', 10; EXECUTE IMMEDIATE 'BEGIN raise_emp_salary(:cvalue, :cname, :amt); END;' USING 112, 'EMPLOYEE_ID', 10;END;/

DECLARE sql_stmt VARCHAR2(200); column VARCHAR2(30) := 'DEPARTMENT_ID'; dept_id NUMBER(4) := 46; dept_name VARCHAR2(30) := 'Special Projects'; mgr_id NUMBER(6) := 200; loc_id NUMBER(4) := 1700;BEGIN-- note that there is no semi-colon (;) inside the quotes '...' EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)'; sql_stmt := 'INSERT INTO departments VALUES (:1, :2, :3, :4)'; EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, mgr_id, loc_id; EXECUTE IMMEDIATE 'DELETE FROM departments WHERE ' || column || ' = :num' USING dept_id; EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE'; EXECUTE IMMEDIATE 'DROP TABLE bonus';END;/-- rollback the changesROLLBACK;-- delete the procedureDROP PROCEDURE raise_emp_salary;

Page 219: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

PL/SQL: Usage Information 8-21

8.3.16 Using Bind VariablesWhen you embed an INSERT, UPDATE, DELETE, or SELECT SQL statement directly in your PL/SQL code, PL/SQL turns the variables in the WHERE and VALUES clauses into bind variables automatically. Oracle can reuse these SQL statement each time the same code is executed. To run similar statements with different variable values, you can save parsing overhead by calling a stored procedure that accepts parameters, then issues the statements with the parameters substituted in the appropriate places.

You do need to specify bind variables with dynamic SQL, in clauses like WHERE and VALUES where you normally use variables. Instead of concatenating literals and variable values into a single string, replace the variables with the names of bind variables (prefixed by a colon) and specify the corresponding PL/SQL variables with the USING clause. Using the USING clause, instead of concatenating the variables into the string, reduces parsing overhead and lets Oracle reuse the SQL statements.

In Example 8–28, :1 and :2 are bind variables for amount and column_value. In the same example, there are additional bind variables, such as :cvalue, :cname, and :amt.

8.4 Handling PL/SQL ErrorsPL/SQL makes it easy to detect and process error conditions known as exceptions. When an error occurs, an exception is raised: normal execution stops and control transfers to special exception-handling code, which comes at the end of any PL/SQL block. Each different exception is processed by a particular exception handler.

PL/SQL exception handling is different from the manual checking you might be used to from C programming, where you insert a check to make sure that every operation succeeded. Instead, the checks and calls to error routines are performed automatically, similar to the exception mechanism in Java programming.

Predefined exceptions are raised automatically for certain common error conditions involving variables or database operations. For example, if you try to divide a number by zero, PL/SQL raises the predefined exception ZERO_DIVIDE automatically. See "Summary of Predefined PL/SQL Exceptions" on page 8-21.

You can declare exceptions of your own, for conditions that you decide are errors, or to correspond to database errors that normally result in ORA- error messages. When you detect a user-defined error condition, you execute a RAISE statement. See "Declaring PL/SQL Exceptions" on page 8-23.

This topic includes the following topics:

■ Summary of Predefined PL/SQL Exceptions

■ Using the Exception Handler

■ Declaring PL/SQL Exceptions

■ Scope Rules for PL/SQL Exceptions

■ Continuing After an Exception is Raised

8.4.1 Summary of Predefined PL/SQL ExceptionsAn internal exception is raised automatically if your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit. PL/SQL predefines some common Oracle errors as exceptions. For example, PL/SQL raises the predefined exception NO_DATA_FOUND if a SELECT INTO statement returns no rows.

Page 220: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

8-22 SQL Developer Online Help

To handle unexpected Oracle errors, you can use the OTHERS handler. Within this handler, you can call the functions SQLCODE and SQLERRM to return the Oracle error code and message text.

PL/SQL declares predefined exceptions globally in package STANDARD. You need not declare them yourself. You can write handlers for predefined exceptions using the names in Table 8–1.

Table 8–1 Predefined PL/SQL Exceptions

Exception Description

ACCESS_INTO_NULL A program attempts to assign values to the attributes of an uninitialized object

CASE_NOT_FOUND None of the choices in the WHEN clauses of a CASE statement is selected, and there is no ELSE clause.

COLLECTION_IS_NULL A program attempts to apply collection methods other than EXISTS to an uninitialized nested table or varray, or the program attempts to assign values to the elements of an uninitialized nested table or varray.

CURSOR_ALREADY_OPEN A program attempts to open an already open cursor. A cursor must be closed before it can be reopened. A cursor FOR loop automatically opens the cursor to which it refers, so your program cannot open that cursor inside the loop.

DUP_VAL_ON_INDEX A program attempts to store duplicate values in a column that is constrained by a unique index.

INVALID_CURSOR A program attempts a cursor operation that is not allowed, such as closing an unopened cursor.

INVALID_NUMBER n a SQL statement, the conversion of a character string into a number fails because the string does not represent a valid number. (In procedural statements, VALUE_ERROR is raised.) This exception is also raised when the LIMIT-clause expression in a bulk FETCH statement does not evaluate to a positive number.

LOGIN_DENIED A program attempts to log on to Oracle with an invalid username or password.

NO_DATA_FOUND A SELECT INTO statement returns no rows, or your program references a deleted element in a nested table or an uninitialized element in an index-by table.

Because this exception is used internally by some SQL functions to signal completion, you should not rely on this exception being propagated if you raise it within a function that is called as part of a query.

NOT_LOGGED_ON A program issues a database call without being connected to Oracle.

PROGRAM_ERROR PL/SQL has an internal problem.

ROWTYPE_MISMATCH The host cursor variable and PL/SQL cursor variable involved in an assignment have incompatible return types. When an open host cursor variable is passed to a stored subprogram, the return types of the actual and formal parameters must be compatible.

SELF_IS_NULL A program attempts to call a MEMBER method, but the instance of the object type has not been initialized. The built-in parameter SELF points to the object, and is always the first parameter passed to a MEMBER method.

STORAGE_ERROR PL/SQL runs out of memory or memory has been corrupted.

SUBSCRIPT_BEYOND_COUNT A program references a nested table or varray element using an index number larger than the number of elements in the collection.

SUBSCRIPT_OUTSIDE_LIMIT A program references a nested table or varray element using an index number (-1 for example) that is outside the legal range.

SYS_INVALID_ROWID The conversion of a character string into a universal rowid fails because the character string does not represent a valid rowid.

TIMEOUT_ON_RESOURCE A time out occurs while Oracle is waiting for a resource.

Page 221: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

PL/SQL: Usage Information 8-23

8.4.2 Using the Exception HandlerUsing exceptions for error handling has several advantages. With exceptions, you can reliably handle potential errors from many statements with a single exception handler:

Example 8–29 Managing Multiple Errors With a Single Exception Handler

DECLARE -- declare variables emp_column VARCHAR2(30) := 'last_name'; table_name VARCHAR2(30) := 'emp'; -- set value to raise error temp_var VARCHAR2(30);BEGIN temp_var := emp_column; SELECT COLUMN_NAME INTO temp_var FROM USER_TAB_COLS WHERE TABLE_NAME = 'EMPLOYEES' AND COLUMN_NAME = UPPER(emp_column);-- processing here temp_var := table_name; SELECT OBJECT_NAME INTO temp_var FROM USER_OBJECTS WHERE OBJECT_NAME = UPPER(table_name) AND OBJECT_TYPE = 'TABLE';-- processing hereEXCEPTION WHEN NO_DATA_FOUND THEN -- catches all 'no data found' errors DBMS_OUTPUT.PUT_LINE ('No Data found for SELECT on ' || temp_var);END;/

8.4.3 Declaring PL/SQL ExceptionsExceptions can be declared only in the declarative part of a PL/SQL block, subprogram, or package. You declare an exception by introducing its name, followed by the keyword EXCEPTION. In Example 8–30, you declare an exception named past_due that is raised when the due_date is less than the today's date.

Exception and variable declarations are similar. But remember, an exception is an error condition, not a data item. Unlike variables, exceptions cannot appear in assignment statements or SQL statements. However, the same scope rules apply to variables and exceptions.

8.4.4 Scope Rules for PL/SQL ExceptionsYou cannot declare an exception twice in the same block. You can, however, declare the same exception in two different blocks.

Exceptions declared in a block are considered local to that block and global to all its sub-blocks. Because a block can reference only local or global exceptions, enclosing blocks cannot reference exceptions declared in a sub-block.

TOO_MANY_ROWS A SELECT INTO statement returns more than one row.

VALUE_ERROR An arithmetic, conversion, truncation, or size-constraint error occurs. For example, when your program selects a column value into a character variable, if the value is longer than the declared length of the variable, PL/SQL aborts the assignment and raises VALUE_ERROR. In procedural statements, VALUE_ERROR is raised if the conversion of a character string into a number fails. (In SQL statements, INVALID_NUMBER is raised.)

ZERO_DIVIDE A program attempts to divide a number by zero.

Table 8–1 (Cont.) Predefined PL/SQL Exceptions

Exception Description

Page 222: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

8-24 SQL Developer Online Help

If you redeclare a global exception in a sub-block, the local declaration prevails. The sub-block cannot reference the global exception, unless the exception is declared in a labeled block and you qualify its name with the block label:

block_label.exception_name

Example 8–30 illustrates the scope rules:

Example 8–30 Scope of PL/SQL Exceptions

DECLARE past_due EXCEPTION; acct_num NUMBER;BEGIN DECLARE ---------- sub-block begins past_due EXCEPTION; -- this declaration prevails acct_num NUMBER; due_date DATE := SYSDATE - 1; -- set on purpose to raise exception todays_date DATE := SYSDATE; BEGIN IF due_date < todays_date THEN RAISE past_due; -- this is not handled END IF; END; ------------- sub-block endsEXCEPTION WHEN past_due THEN -- does not handle raised exception DBMS_OUTPUT.PUT_LINE('Handling PAST_DUE exception.'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Could not recognize PAST_DUE_EXCEPTION in this scope.');END;/

The enclosing block does not handle the raised exception because the declaration of past_due in the sub-block prevails. Though they share the same name, the two past_due exceptions are different, just as the two acct_num variables share the same name but are different variables. Thus, the RAISE statement and the WHEN clause refer to different exceptions. To have the enclosing block handle the raised exception, you must remove its declaration from the sub-block or define an OTHERS handler.

8.4.5 Continuing After an Exception is RaisedBy default, you put an exception handler at the end of a subprogram to handle exceptions that are raised anywhere inside the subprogram. To continue executing from the spot where an exception happens, enclose the code that might raise an exception inside another BEGIN-END block with its own exception handler. For example, you might put separate BEGIN-END blocks around groups of SQL statements that might raise NO_DATA_FOUND, or around arithmetic operations that might raise DIVIDE_BY_ZERO. By putting a BEGIN-END block with an exception handler inside a loop, you can continue executing the loop even if some loop iterations raise exceptions.

You can still handle an exception for a statement, then continue with the next statement. Place the statement in its own sub-block with its own exception handlers. If an error occurs in the sub-block, a local handler can catch the exception. When the sub-block ends, the enclosing block continues to execute at the point where the sub-block ends, as shown in Example 8–31.

Page 223: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

PL/SQL: Usage Information 8-25

Example 8–31 Continuing After an Exception

-- create a temporary table for this exampleCREATE TABLE employees_temp AS SELECT employee_id, salary, commission_pct FROM employees;

DECLARE sal_calc NUMBER(8,2);BEGIN INSERT INTO employees_temp VALUES (303, 2500, 0); BEGIN -- sub-block begins SELECT salary / commission_pct INTO sal_calc FROM employees_temp WHERE employee_id = 303; EXCEPTION WHEN ZERO_DIVIDE THEN sal_calc := 2500; END; -- sub-block ends INSERT INTO employees_temp VALUES (304, sal_calc/100, .1);EXCEPTION WHEN ZERO_DIVIDE THEN NULL;END;/-- view the resultsSELECT * FROM employees_temp WHERE employee_id = 303 OR employee_id = 304;-- drop the temporary tableDROP TABLE employees_temp;

In this example, if the SELECT INTO statement raises a ZERO_DIVIDE exception, the local handler catches it and sets sal_calc to 2500. Execution of the handler is complete, so the sub-block terminates, and execution continues with the INSERT statement.

Page 224: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Handling PL/SQL Errors

8-26 SQL Developer Online Help

Page 225: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Subprograms and Packages: Usage Information 9-1

9Subprograms and Packages: Usage

Information

The topic discusses the development of packages and subprograms with PL/SQL. It includes the following topics:

■ Overview of Packages and Subprograms

■ Managing Subprograms

■ Managing Packages

■ Oracle Product-Specific Packages

9.1 Overview of Packages and SubprogramsOracle offers the capability to store programs in the database. This functionality enables commonly required code to be written and tested once and then accessed by any application that requires the code. Database-resident program units also ensure that the same processing is applied to the data when the code is invoked, making the development of applications easier and providing consistency between developers.

You can write database-resident programs in PL/SQL and manage source types such as PL/SQL packages, procedures, functions, and triggers. The actions include creating, compiling, creating synonyms for, granting privileges on, and showing dependencies for these source types.

Subprograms and Packages: Usage Information describes the main types of PL/SQL program units: packages, package bodies, and subprograms.

You can use PL/SQL to develop packages and stored (standalone) subprograms. Both packages and stored subprograms are saved and stored in the database and can be used as building blocks for applications.

See Also:

■ "Using PL/SQL Packages" in Oracle Database PL/SQL Language Reference for additional information on PL/SQL packages.

■ "Using PL/SQL Subprograms" in Oracle Database PL/SQL Language Reference for information on PL/SQL subprograms

Note: Many examples use the Oracle HR sample schema. For information on the sample schemas, see Oracle Database Sample Schemas.

Page 226: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Packages and Subprograms

9-2 SQL Developer Online Help

This topic includes the following topics:

■ Stored Subprograms

■ Packages

9.1.1 Stored SubprogramsSubprograms, which are either functions or procedures, can be compiled and stored in an Oracle database, ready to be executed. Once compiled, it is a schema object known as a stored procedure or stored function, which can be referenced by any number of applications connected to that database.

The SQL CREATE PROCEDURE statement is used to create stored procedures that are stored in the database. The SQL CREATE FUNCTION statement is used to create stored functions that are stored in an Oracle database.

Subprograms are stored in a compact compiled form. When called, they are loaded and processed immediately. Subprograms take advantage of shared memory, so that only one copy of a subprogram is loaded into memory for execution by multiple users.

Stored subprograms defined within a package are known as packaged subprograms. Those defined independently are called stored or standalone subprograms. Subprograms nested inside other subprograms or within a PL/SQL block are known as local subprograms, which cannot be referenced by other applications and exist only inside the enclosing block.

Stored subprograms are the key to modular, reusable PL/SQL code. Wherever you might use a JAR file in Java, a module in Perl, a shared library in C++, or a DLL in Visual Basic, you should use PL/SQL stored procedures, stored functions, and packages.

You can call stored subprograms from a database trigger, another stored subprogram, or interactively from SQL*Plus. You can also configure a web server so that the HTML for a web page is generated by a stored subprogram, making it simple to provide a web interface for data entry and report generation.

9.1.2 PackagesA package is a schema object that groups logically related PL/SQL types, variables, and subprograms. Packages usually have two parts, a specification (spec) and a body; sometimes the body is unnecessary. The specification is the interface to the package. It declares the types, variables, constants, exceptions, cursors, and subprograms that can be referenced from outside the package. The body defines the queries for the cursors and the code for the subprograms.

See Also: Oracle Database PL/SQL Language Reference to learn about PL/SQL code and program units.

See Also:

■ Oracle Database SQL Language Reference for information on CREATE PROCEDURE.

■ Oracle Database SQL Language Reference for information on CREATE FUNCTION.

See Also: Oracle Database Express Edition 2 Day DBA for information on managing memory with Oracle Database

Page 227: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Packages

Subprograms and Packages: Usage Information 9-3

You can think of the spec as an interface and of the body as a black box. You can debug, enhance, or replace a package body without changing the package spec.

The SQL CREATE PACKAGE statement is used to create package specification (specs). The CREATE PACKAGE BODY statement is used to define the package body.

The spec holds public declarations, which are visible to stored procedures and other code outside the package. You must declare subprograms at the end of the spec after all other items (except pragmas that name a specific function; such pragmas must follow the function spec).

The body holds implementation details and private declarations, which are hidden from code outside the package. Following the declarative part of the package body is the optional initialization part, which holds statements that initialize package variables and do any other one-time setup steps.

9.2 Managing SubprogramsSubprograms do not have to belong to a package. Program units that are created outside of a package are called stored or standalone subprograms. Stored subprograms can be either functions or procedures. These subprograms are stored in the database and can be reused by multiple applications. Both procedures and functions can accept parameters when they are executed (called). To execute a stored subprogram, you only need to include its object name.

A PL/SQL procedure is a subprogram that performs a specific action. You specify the name of the procedure, its parameters, its local variables, and the BEGIN-END block that contains its code and handles any exceptions. A function is a subprogram that computes a value. Functions and procedures are structured alike, except that functions return a value. For information on subprograms in PL/SQL blocks, see Using Local PL/SQL Subprograms in PL/SQL Blocks.

9.3 Managing PackagesWith PL/SQL, you can break an application down into manageable, well-defined modules. Using PL/SQL code, you can write program units that are stored as database objects that can be reused. These objects include packages, subprograms, and triggers. Subprograms and packages are discussed in this topic; triggers are discussed in Triggers: Usage Information.

When writing packages, keep them general so they can be reused in future applications. Become familiar with the Oracle-supplied packages, and avoid writing packages that duplicate features already provided by Oracle.

Design and define package specs before the package bodies. Place in a spec only those things that must be visible to calling programs. That way, other developers cannot build unsafe dependencies on your implementation details.

To reduce the need for recompiling when code is changed, place as few items as possible in a package spec. Changes to a package body do not require recompiling

See Also:

■ Oracle Database SQL Language Reference for information on the CREATE PACKAGE SQL statement.

■ Oracle Database SQL Language Reference for information on the CREATE PACKAGE BODY SQL statement.

Page 228: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Managing Packages

9-4 SQL Developer Online Help

calling procedures. Changes to a package spec require Oracle to recompile every stored subprogram that references the package.

9.3.1 Calling Subprograms in PackagesPackages are stored in the database, where they can be shared by many applications. Calling a packaged subprogram for the first time loads the whole package and caches it in memory, saving on disk I/O for subsequent calls. Thus, packages enhance reuse and improve performance in a multiuser, multi-application environment.

If a subprogram does not take any parameters, you can include an empty set of parentheses or omit the parentheses, both in PL/SQL and in functions called from SQL queries. For calls to a method that takes no parameters, an empty set of parentheses is optional within PL/SQL scopes but required within SQL scopes.

9.3.2 Accessing Variables in PackagesYou can create a package specification that is designated only to supply common variables to other packages or subprograms. With the variables in one package, they can be easily maintained for all subprograms that use the variables, rather than maintaining the variables in all the individual subprograms. These common variables are typically used in multiple subprograms, such as a sales tax rate.

In Example 9–1, the variables my_pi and my_e can be used by any subprogram. If you change the value of my_pi or my_e, then all subprograms that use the variable get the new value without having to change anything in those individual subprograms.

Note that you need to use of the package name as a prefix to the variable name, such as my_pkg.my_pi.

Example 9–1 Using Variables in Packages

CREATE PACKAGE my_pkg AS my_pi NUMBER := 3.14016408289008292431940027343666863227; my_e NUMBER := 2.71828182845904523536028747135266249775; my_sales_tax NUMBER := 0.0825END my_pkg;/

CREATE PROCEDURE circle_area(radius NUMBER) IS my_area NUMBER; my_datatype VARCHAR2(30);BEGIN my_area := my_pkg.my_pi * radius; DBMS_OUTPUT.PUT_LINE('Radius: ' || TO_CHAR(radius) || ' Area: ' || TO_CHAR(my_area) );END;/-- call the circle_area procedure with radius equal to 3CALL circle_area(3);-- call the circle_area procedure with radius equal to 4BEGIN circle_area(3);END;/-- cleanup: drop package and procedureDROP PROCEDURE circle_area;DROP PACKAGE my_pkg;

Page 229: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

Subprograms and Packages: Usage Information 9-5

9.4 Oracle Product-Specific PackagesOracle and various Oracle tools are supplied with product-specific packages that define application programming interfaces (APIs) you can call from PL/SQL, SQL, Java, or other programming environments. This topic includes a summary of two widely used packages and a list of the most common packages with a brief description.

About the DBMS_OUTPUT PackagePackage DBMS_OUTPUT enables you to display output from PL/SQL blocks, subprograms, packages, and triggers. The package is especially useful for displaying PL/SQL debugging information. The procedure PUT_LINE outputs information to a buffer that can be read by another trigger, procedure, or package. You display the information by calling the procedure GET_LINE or by setting SERVEROUTPUT ON in SQL*Plus. See Inputting and Outputting Data with PL/SQL.

Example 9–2 shows how to display output from a PL/SQL block.

Example 9–2 Using PUT_LINE in the DBMS_OUTPUT Package

-- set server output to ON to display output from DBMS_OUTPUTSET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE('These are the tables that ' || USER || ' owns:'); FOR item IN (SELECT table_name FROM user_tables) LOOP DBMS_OUTPUT.PUT_LINE(item.table_name); END LOOP;END;/

About the UTL_FILE PackagePackage UTL_FILE lets PL/SQL programs read and write operating system (OS) text files. It provides a restricted version of standard OS stream file I/O, including open, put, get, and close operations.

When you want to read or write a text file, you call the function FOPEN, which returns a file handle for use in subsequent procedure calls. For example, the procedure PUT_LINE writes a text string and line terminator to an open file, and the procedure GET_LINE reads a line of text from an open file into an output buffer.

Common Oracle Supplied PackagesTable 9–1 provides a list of the common PL/SQL packages included with Oracle Database.

See Also:

■ Oracle Database PL/SQL Packages and Types Reference for information on and usage of product-specific packages.

Table 9–1 Summary of Oracle Supplied PL/SQL Packages

Package Name Description

DBMS_ALERT Provides support for the asynchronous notification of database events.

DBMS_APPLICATION_INFO Lets you register an application name with the database for auditing or performance tracking purposes.

Page 230: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

9-6 SQL Developer Online Help

DBMS_AQ Lets you add a message (of a predefined object type) onto a queue or to dequeue a message.

DBMS_AQADM Lets you perform administrative functions on a queue or queue table for messages of a predefined object type.

DBMS_AQELM Provides procedures to manage the configuration of Advanced Queuing asynchronous notification by e-mail and HTTP.

DBMS_AQIN Plays a part in providing secure access to the Oracle JMS interfaces.

DBMS_CHANGE_NOTIFICATION Is part of a set of features that clients use to receive notifications when result sets of a query have changed. The package contains interfaces that can be used by mid-tier clients to register objects and specify delivery mechanisms.

DBMS_CRYPTO Lets you encrypt and decrypt stored data, can be used in conjunction with PL/SQL programs running network communications, and supports encryption and hashing algorithms.

DBMS_DATAPUMP Lets you move all, or part of, a database between databases, including both data and metadata.

DBMS_DB_VERSION Specifies the Oracle version numbers and other information useful for simple conditional compilation selections based on Oracle versions.

DBMS_DDL Provides access to some SQL DDL statements from stored procedures, and provides special administration operations not available as DDLs.

DBMS_DEBUG Implements server-side debuggers and provides a way to debug server-side PL/SQL program units.

DBMS_DESCRIBE Describes the arguments of a stored procedure with full name translation and security checking.

DBMS_EPG Implements the embedded PL/SQL gateway that enables a web browser to invoke a PL/SQL stored procedure through an HTTP listener.

DBMS_ERRLOG Provides a procedure that enables you to create an error logging table so that DML operations can continue after encountering errors rather than abort and roll back.

DMBS_FILE_TRANSFER Lets you copy a binary file within a database or to transfer a binary file between databases.

DMBS_FLASHBACK Lets you flash back to a version of the database at a specified wall-clock time or a specified system change number (SCN).

DBMS_JOB Lets you schedule administrative procedures that you want performed at periodic intervals; it is also the interface for the job queue.

DBMS_LOB Provides general purpose routines for operations on Oracle Large Object (LOBs) data types - BLOB, CLOB (read/write), and BFILEs (read-only).

DBMS_LOCK Lets you request, convert and release locks through Oracle Lock Management services.

Table 9–1 (Cont.) Summary of Oracle Supplied PL/SQL Packages

Package Name Description

Page 231: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

Subprograms and Packages: Usage Information 9-7

DBMS_METADATA Lets callers easily retrieve complete database object definitions (metadata) from the dictionary.

DBMS_OBFUSCATION_TOOLKIT Provides procedures for Data Encryption Standards.

DBMS_OUTPUT Accumulates information in a buffer so that it can be retrieved later.

DBMS_PIPE Provides a DBMS pipe service which enables messages to be sent between sessions.

DBMS_RANDOM Provides a built-in random number generator.

DBMS_RESUMABLE Lets you suspend large operations that run out of space or reach space limits after executing for a long time, fix the problem, and make the statement resume execution.

DBMS_ROWID Provides procedures to create rowids and to interpret their contents.

DBMS_SCHEDULER Provides a collection of scheduling functions that are callable from any PL/SQL program.

DBMS_SERVER_ALERT Lets you issue alerts when some threshold has been violated.

DBMS_SESSION Provides access to SQL ALTER SESSION statements, and other session information, from stored procedures.

DBMS_SQL Lets you use dynamic SQL to access the database.

DBMS_TDB Reports whether a database can be transported between platforms using the RMAN CONVERT DATABASE command. It verifies that databases on the current host platform are of the same endian format as the destination platform, and that the state of the current database does not prevent transport of the database.

DBMS_TTS Checks if the transportable set is self-contained.

DBMS_TYPES Consists of constants, which represent the built-in and user-defined types.

DBMS_UTILITY Provides various utility routines.

DBMS_WARNING Provides the interface to query, modify and delete current system or session settings.

DBMS_XDB Describes Resource Management and Access Control APIs for PL/SQL

DBMS_XDB_VERSION Describes versioning APIs

DBMS_XDBT Describes how an administrator can create a ConText index on the XML DB hierarchy and configure it for automatic maintenance

DBMS_XDBZ Controls the Oracle XML DB repository security, which is based on Access Control Lists (ACLs).

DBMS_XMLDOM Explains access to XMLType objects

DBMS_XMLGEN Converts the results of a SQL query to a canonical XML format.

DBMS_XMLPARSER Explains access to the contents and structure of XML documents.

DMBS_XMLQUERY Provides database-to-XMLType functionality.

Table 9–1 (Cont.) Summary of Oracle Supplied PL/SQL Packages

Package Name Description

Page 232: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

9-8 SQL Developer Online Help

DBMS_XMLSAVE Provides XML-to-database-type functionality.

DBMS_XMLSCHEMA Explains procedures to register and delete XML schemas.

DBMS_XMLSTORE Provides the ability to store XML data in relational tables.

DBMS_XPLAN Describes how to format the output of the EXPLAIN PLAN command.

DBMS_XSLPROCESSOR Explains access to the contents and structure of XML documents.

HTF Hypertext functions generate HTML tags.

HTMLDB_APPLICATION Enables users to take advantage of global variables

HTMLDB_CUSTOM_AUTH Enables users to create form elements dynamically based on a SQL query instead of creating individual items page by page.

HTMLDB_ITEM Enables users to create form elements dynamically based on a SQL query instead of creating individual items page by page.

HTMLDB_UTIL Provides utilities for getting and setting session state, getting files, checking authorizations for users, resetting different states for users, and also getting and setting preferences for users.

HTP Hypertext procedures generate HTML tags.

OWA_CACHE Provides an interface that enables the PL/SQL Gateway cache to improve the performance of PL/SQL web applications.

OWA_COOKIE Provides an interface for sending and retrieving HTTP cookies from the client's browser.

OWA_CUSTOM Provides a Global PLSQL Agent Authorization callback function

OWA_IMAGE Provides an interface to access the coordinates where a user clicked on an image.

OWA_OPT_LOCK Contains subprograms that impose optimistic locking strategies so as to prevent lost updates.

OWA_PATTERN Provides an interface to locate text patterns within strings and replace the matched string with another string.

OWA_SEC Provides an interface for custom authentication.

OWA_TEXT Contains subprograms used by OWA_PATTERN for manipulating strings. They are externalized so you can use them directly.

OWA_UTIL Contains utility subprograms for performing operations such as getting the value of CGI environment variables, printing the data that is returned to the client, and printing the results of a query in an HTML table.

UTL_COLL Enables PL/SQL programs to use collection locators to query and update.

UTL_COMPRESS Provides a set of data compression utilities.

UTL_DBWS Provides database web services.

Table 9–1 (Cont.) Summary of Oracle Supplied PL/SQL Packages

Package Name Description

Page 233: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

Subprograms and Packages: Usage Information 9-9

UTL_ENCODE Provides functions that encode RAW data into a standard encoded format so that the data can be transported between hosts.

UTL_FILE Enables your PL/SQL programs to read and write operating system text files and provides a restricted version of standard operating system stream file I/O.

UTL_HTTP Enables HTTP callouts from PL/SQL and SQL to access data on the Internet or to call Oracle Web Server Cartridges.

UTL_I18N Provides a set of services (Oracle Globalization Service) that help developers build multilingual applications.

UTL_INADDR Provides a procedure to support internet addressing.

UTL_LMS Retrieves and formats error messages in different languages.

UTL_MAIL A utility for managing email which includes commonly used email features, such as attachments, CC, BCC, and return receipt.

UTL_RAW Provides SQL functions for RAW data types that concat, substr to and from RAWS.

UTL_RECOMP Recompiles invalid PL/SQL modules, Java classes, indextypes and operators in a database, either sequentially or in parallel.

UTL_REF Enables a PL/SQL program to access an object by providing a reference to the object.

UTL_SMTP Provides PL/SQL functionality to send emails.

UTL_TCP Provides PL/SQL functionality to support simple TCP/IP-based communications between servers and the outside world.

UTL_URL Provides escape and unescape mechanisms for URL characters.

Table 9–1 (Cont.) Summary of Oracle Supplied PL/SQL Packages

Package Name Description

Page 234: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Oracle Product-Specific Packages

9-10 SQL Developer Online Help

Page 235: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Triggers: Usage Information 10-1

10Triggers: Usage Information

This topic discusses the use of database triggers with Oracle Express. Triggers are database objects that can be created with PL/SQL code. This topic includes the following topics:

■ Overview of Triggers

■ Designing Triggers

10.1 Overview of TriggersA database trigger is a stored subprogram associated with a database table, view, or event. The trigger can be called once, when some event occurs, or many times, once for each row affected by an INSERT, UPDATE, or DELETE statement. The trigger can be called after the event, to record it or take some follow-up action. Or, the trigger can be called before the event to prevent erroneous operations or fix new data so that it conforms to business rules. The executable part of a trigger can contain procedural statements as well as SQL data manipulation statements.

Triggers are created using the SQL CREATE TRIGGER statement. The CREATE (or CREATE OR REPLACE) statement fails if any errors exist in the PL/SQL block.

■ Types of Triggers

■ Naming Triggers

■ When Is the Trigger Fired?

■ Controlling When a Trigger Is Fired

■ Accessing Column Values in Row Triggers

■ Detecting the DML Operation That Fired a Trigger

■ Enabled and Disabled Trigger Modes

■ Error Conditions and Exceptions in the Trigger Body

See Also:

■ Oracle Database Concepts for information on triggers.

■ Oracle Database Advanced Application Developer's Guide for information on triggers.

■ Oracle Database SQL Language Reference for information on the CREATE TRIGGER SQL statement.

See Also: Oracle Database SQL Language Reference for information on trigger creation syntax

Page 236: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Triggers

10-2 SQL Developer Online Help

10.1.1 Types of Triggers A trigger is either a stored PL/SQL block or a PL/SQL, or C procedure associated with a table, view, schema, or the database itself. Oracle automatically executes a trigger when a specified event takes place, which usually is a DML statement being issued against the table.

You can create triggers to be fired on any of the following:

■ DML statements (DELETE, INSERT, UPDATE)

■ DDL statements (CREATE, ALTER, DROP)

■ Database operations (LOGON, LOGOFF)

10.1.2 Naming Triggers Trigger names must be unique with respect to other triggers in the same schema. Trigger names do not need to be unique with respect to other schema objects, such as tables, views, and procedures. For example, a table and a trigger can have the same name; however, to avoid confusion, this is not recommended.

10.1.3 When Is the Trigger Fired? A trigger is fired based on a triggering statement, which specifies:

■ The SQL statement or the system event, database event, or DDL event that fires the trigger body. The options include DELETE, INSERT, and UPDATE. One, two, or all three of these options can be included in the triggering statement specification.

■ The table, view, DATABASE, or SCHEMA associated with the trigger.

If a trigger contained the following statement:

AFTER DELETE OR INSERT OR UPDATE ON employees ...

then any of the following statements would fire the trigger:

DELETE FROM employees WHERE ...;INSERT INTO employees VALUES ( ... );INSERT INTO employees SELECT ... FROM ... ;UPDATE employees SET ... ;

An UPDATE statement might include a list of columns. If a triggering statement includes a column list, the trigger is fired only when one of the specified columns is updated. If a triggering statement omits a column list, the trigger is fired when any column of the associated table is updated. A column list cannot be specified for INSERT or DELETE triggering statements.

10.1.4 Controlling When a Trigger Is Fired There are several ways to control when a trigger is fired.

10.1.4.1 Firing Triggers With the BEORE and AFTER OptionsThe BEFORE or AFTER option in the CREATE TRIGGER statement specifies exactly when to fire the trigger body in relation to the triggering statement that is being run. In a CREATE TRIGGER statement, the BEFORE or AFTER option is specified just before the triggering statement.

In general, you use BEFORE or AFTER triggers to achieve the following results:

Page 237: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Triggers

Triggers: Usage Information 10-3

■ Use a BEFORE row trigger to modify the row before the row data is written to disk.

■ Use an AFTER row trigger to obtain, and perform operations, using the row Id.

If an UPDATE or DELETE statement detects a conflict with a concurrent UPDATE, then Oracle performs a transparent ROLLBACK and restarts the update. This can occur many times before the statement completes successfully. Each time the statement is restarted, the BEFORE statement trigger is fired again. The rollback does not undo changes to any package variables referenced in the trigger. Your package should include a counter variable to detect this situation.

10.1.4.2 Firing Triggers With the FOR EACH ROW Option The FOR EACH ROW option determines whether the trigger is a row trigger or a statement trigger. If you specify FOR EACH ROW, then the trigger fires once for each row of the table that is affected by the triggering statement. These triggers are referred to as row-level triggers.

The absence of the FOR EACH ROW option indicates that the trigger fires only once for each applicable statement, but not separately for each row affected by the statement. These triggers are referred to as statement-level triggers and are useful for performing validation checks for the entire statement.

10.1.4.3 Firing Triggers Based on Conditions (WHEN Clause) An optional trigger restriction can be included in the definition of a row trigger by specifying a Boolean SQL expression in a WHEN clause.

If included, then the expression in the WHEN clause is evaluated for each row that the trigger affects. If the expression evaluates to TRUE for a row, then the trigger body is fired on behalf of that row.

The expression in a WHEN clause must be a SQL expression, and it cannot include a subquery. You cannot use a PL/SQL expression (including user-defined functions) in the WHEN clause. A WHEN clause cannot be included in the definition of a statement trigger.

10.1.5 Accessing Column Values in Row Triggers Within a trigger body of a row trigger, the PL/SQL code and SQL statements have access to the old and new column values of the current row affected by the triggering statement. Two correlation names exist for every column of the table being modified: one for the old column value, and one for the new column value. These columns in the table are identified by :OLD.colum_name and :NEW.column_name.

Depending on the type of triggering statement, certain correlation names might not have any meaning.

■ A trigger fired by an INSERT statement has meaningful access to new column values only. Because the row is being created by the INSERT, the old values are null.

Note: BEFORE row triggers are slightly more efficient than AFTER row triggers. With AFTER row triggers, affected data blocks must be read (logical read, not physical read) once for the trigger and then again for the triggering statement. Alternatively, with BEFORE row triggers, the data blocks must be read only once for both the triggering statement and the trigger.

Page 238: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Triggers

10-4 SQL Developer Online Help

■ A trigger fired by an UPDATE statement has access to both old and new column values for both BEFORE and AFTER row triggers.

■ A trigger fired by a DELETE statement has meaningful access to :OLD column values only. Because the row no longer exists after the row is deleted, the :new values are NULL and cannot be modified.

Old and new values are available in both BEFORE and AFTER row triggers. A new column value can be assigned in a BEFORE row trigger, but not in an AFTER row trigger (because the triggering statement takes effect before an AFTER row trigger is fired). If a BEFORE row trigger changes the value of NEW.column, then an AFTER row trigger fired by the same statement sees the change assigned by the BEFORE row trigger.

Correlation names can also be used in the Boolean expression of a WHEN clause. A colon (:) must precede the OLD and NEW qualifiers when they are used in a trigger body, but a colon is not allowed when using the qualifiers in the WHEN clause.

10.1.6 Detecting the DML Operation That Fired a TriggerIf more than one type of DML operation can fire a trigger, such as ON INSERT OR UPDATE, the trigger body can use the conditional predicates INSERTING, DELETING, and UPDATING to check which type of statement fire the trigger.

Within the code of the trigger body, you can execute blocks of code depending on the kind of DML operation fired the trigger.

In an UPDATE trigger, a column name can be specified with an UPDATING conditional predicate to determine if the named column is being updated. For example, assume a trigger is defined as the following:

CREATE OR REPLACE TRIGGER ...... UPDATE OF salary ON employees ...BEGIN... IF UPDATING ('salary') THEN ... END IF;...

The code in the THEN clause runs only if the triggering UPDATE statement updates the salary column. This way, the trigger can minimize its overhead when the column of interest is not being changed.

10.1.7 Enabled and Disabled Trigger ModesA trigger can be in enabled or disabled modes. You would disable a trigger if you did not want the trigger to execute, perhaps during maintenance activities on the database.

■ Enabled. An enabled trigger executes its trigger body if a triggering statement is entered and the trigger restriction (if any) evaluates to TRUE.

■ Disabled. A disabled trigger does not execute its trigger body, even if a triggering statement is entered and the trigger restriction (if any) evaluates to TRUE.

10.1.8 Error Conditions and Exceptions in the Trigger Body If a predefined or user-defined error condition or exception is raised during the execution of a trigger body, then all effects of the trigger body, as well as the triggering statement, are rolled back unless the error is trapped by an exception handler. Therefore, a trigger body can prevent the execution of the triggering statement by

Page 239: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Designing Triggers

Triggers: Usage Information 10-5

raising an exception. User-defined exceptions are commonly used in triggers that enforce complex security authorizations or integrity constraints.

10.2 Designing TriggersThis topic discusses the design of triggers. It includes the following topics:

■ Guidelines For Triggers

■ Restrictions on Creating Triggers

■ Privileges Needed to Work with Triggers

10.2.1 Guidelines For TriggersUse the following guidelines when designing your triggers:

■ Use triggers to guarantee that when a specific operation is performed, related actions are performed.

■ Do not define triggers that duplicate features already built into Oracle Database. For example, do not define triggers to reject bad data if you can do the same checking through declarative integrity constraints.

■ Limit the size of triggers. If the logic for your trigger requires much more than 60 lines of PL/SQL code, it is better to include most of the code in a stored procedure and call the procedure from the trigger. The size of the trigger cannot be more than 32K.

■ Use triggers only for centralized, global operations that should be fired for the triggering statement, regardless of which user or database application issues the statement.

■ Do not create recursive triggers. For example, creating an AFTER UPDATE statement trigger on the employees table that itself issues an UPDATE statement on employees, causes the trigger to fire recursively until it has run out of memory.

■ Use triggers on DATABASE judiciously. They are executed for every user every time the event occurs on which the trigger is created.

10.2.2 Restrictions on Creating Triggers When creating triggers with PL/SQL code, there are some restrictions that are not required for standard PL/SQL blocks. The following topics discuss these restrictions.

SQL Statements Allowed in Trigger Bodies The body of a trigger can contain DML SQL statements. It can also contain SELECT statements, but they must be SELECT... INTO... statements or the SELECT statement in the definition of a cursor.

DDL statements are not allowed in the body of a trigger. Also, no transaction control statements are allowed in a trigger. ROLLBACK, COMMIT, and SAVEPOINT cannot be used.For system triggers, {CREATE/ALTER/DROP} TABLE statements and ALTER...COMPILE are allowed.

Page 240: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Designing Triggers

10-6 SQL Developer Online Help

Statements inside a trigger can reference remote schema objects. However, pay special attention when calling remote procedures from within a local trigger. If a timestamp or signature mismatch is found during execution of the trigger, then the remote procedure is not run, and the trigger is invalidated.

System Trigger Restrictions Only committed triggers are fired. For example, if you create a trigger that should be fired after all CREATE events, then the trigger itself does not fire after the creation, because the correct information about this trigger was not committed at the time when the trigger on CREATE events was fired.

For example, if you execute the following SQL statement:

CREATE OR REPLACE TRIGGER my_triggerAFTER CREATE ON DATABASE

BEGINNULL;

END;

Then, trigger my_trigger is not fired after the creation of my_trigger. Oracle Database does not fire a trigger that is not committed.

10.2.3 Privileges Needed to Work with Triggers To create a trigger in your schema, you must have the CREATE TRIGGER system privilege, and either:

■ Own the table specified in the triggering statement, or

■ Have the ALTER privilege for the table in the triggering statement, or

■ Have the ALTER ANY TABLE system privilege

To create a trigger in another user's schema, or to reference a table in another schema from a trigger in your schema, you must have the CREATE ANY TRIGGER system privilege. With this privilege, the trigger can be created in any schema and can be associated with any user's table. In addition, the user creating the trigger must also have EXECUTE privilege on the referenced procedures, functions, or packages.

To create a trigger on DATABASE, you must have the ADMINISTER DATABASE TRIGGER privilege. If this privilege is later revoked, then you can drop the trigger, but not alter it.

The object privileges to the schema objects referenced in the trigger body must be granted to the trigger owner explicitly (not through a role). The statements in the trigger body operate under the privilege domain of the trigger owner, not the privilege domain of the user issuing the triggering statement. This is similar to the privilege model for stored procedures.

Note: A procedure called by a trigger cannot run the previous transaction control statements, because the procedure runs within the context of the trigger body.

Page 241: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL*Plus: Usage Information 11-1

11SQL*Plus: Usage Information

SQL*Plus is an interactive and batch command-line query tool that is installed with Oracle Database. This topic includes the following topics:

■ Overview of SQL*Plus

■ Using SQL*Plus

11.1 Overview of SQL*PlusSQL*Plus is a command-line tool for accessing Oracle Database. It enables you to enter and execute SQL, PL/SQL, and SQL*Plus commands to:

■ Query, insert, and update data

■ Execute PL/SQL procedures

■ Examine table and object definitions

■ Develop and run batch scripts

■ Perform database administration

You can use SQL*Plus to generate reports interactively, to generate reports as batch processes, and to output the results to text file, to screen, or to HTML file for browsing on the Internet.

11.2 Using SQL*PlusThis topic describes SQL*Plus, Oracle's command line tool for executing SQL and PL/SQL.

■ Starting and Exiting SQL*Plus

■ Displaying Help With SQL*Plus

■ Entering and Executing SQL Statements and Commands

■ SQL*Plus DESCRIBE Command

■ SQL*Plus SET Commands

See Also:

■ SQL*Plus User's Guide and Reference for complete information about SQL*Plus

■ Oracle Database SQL Language Reference for information on using SQL statements

Page 242: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

11-2 SQL Developer Online Help

■ Running Scripts From SQL*Plus

■ Spooling From SQL*Plus

■ Using Variables With SQL*Plus

11.2.1 Starting and Exiting SQL*PlusTo start SQL*Plus from the operating system command prompt, enter the following:

sqlplus

When prompted, enter the username and password of the user account (schema) that you want to access. For example, enter HR for the username and your_hr_password when prompted.

After you have started SQL*Plus, the SQL> prompt displays for you to type in SQL statements, as follows:

SQL>

When you want to quit or exit SQL*Plus, type EXIT or QUIT at the SQL prompt, as follows:

SQL> EXIT

11.2.2 Displaying Help With SQL*PlusTo display a list of help topics for SQL*Plus commands enter HELP INDEX at the SQL prompt as follows:

SQL> HELP INDEX

From the list of SQL*Plus help topics, you can display help on an individual topic by entering HELP with a topic name. For example the following displays help on the SQL*Plus COLUMN command, which enables you to format column output:

SQL> HELP COLUMN

11.2.3 Entering and Executing SQL Statements and CommandsTo enter and execute SQL statements or commands, type in the statement or command at the SQL prompt. At the end of a SQL statement, put a semi-colon (;) and then press the Enter key to execute the statement. For example:

SQL> SELECT * FROM employees;

If the statement does not fit on one line, type in the first line and press the Enter key. Continue entering lines, terminating the last line with a semi-colon (;). For example:

SQL> SELECT employee_id, first_name, last_name2 FROM employees3 WHERE employee_id >= 105 AND employee_id <= 110;

The output from the previous SELECT statement would be similar to:

EMPLOYEE_ID FIRST_NAME LAST_NAME----------- -------------------- -----------------------

105 David Austin106 Valli Pataballa107 Diana Lorentz108 Nancy Greenberg109 Daniel Faviet

Page 243: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

SQL*Plus: Usage Information 11-3

110 John Chen6 rows selected.

Note that a terminating semi-colon (;) is optional with SQL *Plus commands, but required with SQL statements.

11.2.4 SQL*Plus DESCRIBE CommandSQL*Plus provides the DESCRIBE to display a description of a database object. For example, the following displays the structure of the employees table. This description is useful when constructing SQL statements that manipulate the employees table.

SQL> DESCRIBE employeesName Null? Type---------------------------------------- -------- ------------EMPLOYEE_ID NOT NULL NUMBER(6)FIRST_NAME VARCHAR2(20)LAST_NAME NOT NULL VARCHAR2(25)EMAIL NOT NULL VARCHAR2(25)PHONE_NUMBER VARCHAR2(20)HIRE_DATE NOT NULL DATEJOB_ID NOT NULL VARCHAR2(10)SALARY NUMBER(8,2)COMMISSION_PCT NUMBER(2,2)MANAGER_ID NUMBER(6)DEPARTMENT_ID NUMBER(4)

11.2.5 SQL*Plus SET CommandsThe SQL*Plus SET commands can be used to specify various SQL*Plus settings, such as the format of the output from SQL*Plus statements. For example, the following SET commands specify the number of lines per page display and the number of characters per line in the output:

SQL> SET PAGESIZE 200SQL> SET LINESIZE 140

To enable output from PL/SQL blocks with DBMS_OUTPUT

To view all the settings, enter the following at the SQL prompt:

SQL> SHOW ALL

For information about the SQL*Plus SERVEROUTPUT setting to display output from a PL/SQL program, see Inputting and Outputting Data with PL/SQL.

11.2.6 Running Scripts From SQL*PlusYou can use a text editor to create SQL*Plus script files containing SQL*Plus, SQL, and PL/SQL statements. For consistency, use the .sql extension for the script file name.

See Also:

■ SQL*Plus User's Guide and Reference for information setting up the SQL*Plus environment with a login file

Page 244: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

11-4 SQL Developer Online Help

A SQL script file is executed with a START or @ command. For example, on a Windows environment you could execute a SQL script as follows:

SQL> @c:\my_scripts\my_sql_script.sql

A SQL script file could be executed on a Linux environment as follows:

SQL> START /home/cjones/my_scripts/my_sql_script.sql

You can use SET ECHO ON to cause a script to echo each statement that is executed. You can use SET TERMOUT OFF to prevent the script output from displaying on the screen.

When running a script, you should include the full path name unless the script is located in the directory where SQL*Plus was launched.

11.2.7 Spooling From SQL*PlusThe SPOOL command can be used to direct the output from SQL*Plus to a disk file, which enables you to save the output for future review.

To start spooling the output to an operating system file, you can enter:

SQL> SPOOL my_log_file.log

If you want to append the output to an existing file:

SQL> SPOOL my_log_file.log APPEND

To stop spooling and close a file, enter the following:

SQL> SPOOL OFF

11.2.8 Using Variables With SQL*PlusYou can write queries that use variables to make your SELECT statements more flexible. You can define the variable prior to running a SQL statement or you can prompt for a variable value at the time that the SQL statement is run.

When using a variable in a SQL statement, the variable name must be begin with an ampersand (&).

This topic includes the following topics:

■ Prompting for a Variable

■ Defining a Variable Value for a Query

For information on using bind variables in PL/SQL code, see Using Bind Variables.

11.2.8.1 Prompting for a VariableIn Example 11–1, including the variable &emp_id causes the SQL statement to prompt for a value when the statement is executed. You can then enter the employee_id that you want to display, such as employee Id 125.

Example 11–1 Defining a Variable

-- prompt for employee_id in a query, you need to enter a valid Id such as 125SELECT employee_id, last_name, job_id FROM employees WHERE employee_id = &emp_id;

When you run the previous SELECT statement, the output is similar to:

Enter value for emp_id: 125...EMPLOYEE_ID LAST_NAME JOB_ID

Page 245: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

SQL*Plus: Usage Information 11-5

----------- ------------------------- ----------125 Nayer ST_CLERK

11.2.8.2 Defining a Variable Value for a QueryIn Example 11–2, the variable &jobid is defined prior to running the SQL statement and the defined value is substituted for the variable when the statement is executed.

Example 11–2 Prompting for a Variable

-- define a variable value for a query as followsDEFINE jobid = "ST_CLERK"-- run a query using the defined value for jobid (ST_CLERK)SELECT employee_id, last_name FROM employees WHERE job_id = '&jobid';

Page 246: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Using SQL*Plus

11-6 SQL Developer Online Help

Page 247: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Working in a Global Environment 12-1

12Working in a Global Environment

This topic describes how to use Oracle's database access products with Unicode and provides useful information for SQL and PL/SQL programming in a globalization support environment. It includes the following topics:

■ Overview of Globalization Support

■ NLS Parameter Values in the SQL Developer Environment

■ Setting up the Globalization Support Environment

■ SQL and PL/SQL Programming with Unicode

■ Locale-Dependent SQL Functions with Optional NLS Parameters

12.1 Overview of Globalization SupportOracle's globalization support enables you to store, process, and retrieve data in native languages. It ensures that database utilities, error messages, sort order, and date, time, monetary, numeric, and calendar conventions automatically adapt to any native language and locale.

Oracle's globalization support includes National Language Support (NLS) features. National Language Support is the ability to choose a national language and store data in a specific character set. Globalization support enables you to develop multilingual applications and software products that can be accessed and run from anywhere in the world simultaneously. An application can render content of the user interface and process data in the native users' languages and locale preferences.

Oracle's standard features include:

See Also:

■ Oracle Database Globalization Support Guide for a complete discussion of globalization support with Oracle Database, including setting up the globalization support environment.

■ Oracle Database Reference for information on initialization parameters used for globalization support

■ Oracle Database SQL Language Reference for information on date and time formats.

Note: The National Language Support Parameters report lists the values of parameters for globalization support. For information about this and other SQL Developer reports, see Reports.

Page 248: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Overview of Globalization Support

12-2 SQL Developer Online Help

■ Language Support

The database enables you to store, process, and retrieve data in native languages. Through the use of Unicode databases and data types, the Oracle database supports most contemporary languages.

See "Setting NLS Parameters".

■ Territory Support

The database supports cultural conventions that are specific to geographical locations. The default local time format, date format, and numeric and monetary conventions depend on the local territory setting.

See "Language and Territory Parameters".

■ Date and Time Formats

Different conventions for displaying the hour, day, month, and year can be handled in local formats. Time zones and daylight saving support are also available.

See "Date and Time Parameters".

■ Monetary and Numeric Formats

Currency, credit, debit symbols, and numbers can be represented in local formats.

See "Monetary Parameters" and "Numeric and List Parameters" on page 12-12.

■ Calendars Feature

Oracle supports seven different calendar systems in use around the world: Gregorian, Japanese Imperial, ROC Official (Republic of China), Thai Buddha, Persian, English Hijrah, and Arabic Hijrah.

See "Calendar Definitions".

■ Linguistic Sorting

Oracle provides linguistic definitions for culturally accurate sorting and case conversion.

See "Linguistic Sorting and Searching".

■ Character Set Support

Oracle supports a large number of single-byte, multibyte, and fixed-width encoding schemes that are based on national, international, and vendor-specific standards.

■ Character Semantics

Oracle provides character semantics. It is useful for defining the storage requirements for multibyte strings of varying widths in terms of characters instead of bytes.

See "Length Semantics".

■ Unicode Support

Unicode is a universal encoded character set that enables you to store information in any language, using a single character set. Oracle Database provides products such as SQL and PL/SQL for inserting and retrieving Unicode data.

See "SQL and PL/SQL Programming with Unicode".

Page 249: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

NLS Parameter Values in the SQL Developer Environment

Working in a Global Environment 12-3

12.2 NLS Parameter Values in the SQL Developer EnvironmentIn an Oracle database, NLS parameter values are initially determined by database initialization parameters. The DBA can set values in the initialization file, and any changes to that file will take effect at the next database startup. Database users can change specific parameter values for the current session (the current connection to the database) by using a statement in the form: ALTER SESSION SET parameter-name = 'value';

When you are using SQL Developer, be aware that the parameters values from the database initialization file are not used. Instead, SQL Developer initially (after installation) uses parameter values that include the following:

NLS_LANG,"AMERICAN"NLS_TERR,"AMERICA"NLS_CHAR,"AL32UTF8"NLS_SORT,"BINARY"NLS_CAL,"GREGORIAN"NLS_DATE_LANG,"AMERICAN"NLS_DATE_FORM,"DD-MON-RR"

These and other NLS parameter values, which are used for all sessions in SQL Developer (such as SQL Worksheet windows and the National Language Support Parameters report, for all connections) are visible in the Database: NLS Parameters preferences pane.

To change the value of any NLS parameter, you have the following options:

■ Change the value for use with all SQL Developer connections (current and future) by using the Database: NLS Parameters preferences pane.

■ Change the value for the current connection only by using the ALTER SESSION statement in the SQL Worksheet window.

Thus, you have great flexibility in testing different language settings during database application development. For example, you can use ALTER SESSION to see the output of subsequent PL/SQL statements with different language settings, and then revert to the SQL Developer default settings by disconnecting and reconnecting.

For example, assume that the NLS_LANGUAGE value in the preferences is set to FRENCH, and that today is March 1, 2007. If you enter SELECT sysdate FROM dual; in the SQL Worksheet and click the Run Script icon, the output is:

SYSDATE ------------------------- 01-MARS -07

If you enter ALTER SESSION SET NLS_LANGUAGE='AMERICAN'; and enter the preceding SELECT statement again, the output is:

SYSDATE ------------------------- 01-MAR-07

Continuing with this example, if you disconnect from the current connection and reconnect to it, the session NLS_LANGUAGE value is FRENCH (as specified in the preferences), and the SELECT statement output is:

SYSDATE ------------------------- 01-MARS -07

Page 250: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-4 SQL Developer Online Help

12.3 Setting up the Globalization Support EnvironmentThis topic discusses how to set up a globalization support environment. It includes the following topics:

■ Setting NLS Parameters

■ Choosing a Locale with the NLS_LANG Environment Variable

■ Language and Territory Parameters

■ Date and Time Parameters

■ Calendar Definitions

■ Numeric and List Parameters

■ Monetary Parameters

■ Linguistic Sorting and Searching

■ Length Semantics

12.3.1 Setting NLS ParametersNLS (National Language Support) parameters determine the locale-specific behavior on both the client and the server. NLS parameters can be specified several ways. In this guide, altering parameters for the user session and overriding the parameters in SQL functions are discussed. Both of these techniques accomplished through the use of SQL statements.

You can alter the NLS parameters settings by:

■ Setting NLS parameters in an ALTER SESSION statement to override the default values that are set for the session in the initialization parameter file, or that are set by the client with environment variables. For example:

ALTER SESSION SET NLS_SORT = french;

Note that the changes that you make with ALTER SESSION apply only to the current user session and are not present the next time you log in.

■ Using NLS parameters within a SQL function to override the default values that are set for the session in the initialization parameter file, set for the client with environment variables, or set for the session by the ALTER SESSION statement. For example:

TO_CHAR(hiredate,'DD/MON/YYYY','nls_date_language = FRENCH')

See Also:

■ "Setting NLS Parameters" in Oracle Database Globalization Support Guide for details on setting the NLS parameters

■ Oracle Database SQL Language Reference for more information about the ALTER SESSION statement

■ Oracle Database Administrator's Guide for information on the initialization parameter file

Page 251: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-5

Additional methods for setting the NLS parameters require that you shutdown and restart the database. These techniques include the following:

■ Including parameters in the Oracle Database initialization parameter file to specify the default session NLS environment on the server side. For example:

NLS_TERRITORY = "CZECH REPUBLIC"

■ Using NLS environment variables on the client, which may be platform-dependent, to specify locale-dependent behavior for the client and also to override the default values set for the session in the initialization parameter file. For example, on a Linux system:

% setenv NLS_SORT FRENCH

12.3.2 Choosing a Locale with the NLS_LANG Environment VariableA locale is a linguistic and cultural environment in which a system or program is running. Setting the NLS_LANG environment parameter is the simplest way to specify locale behavior for Oracle software. It sets the language and territory used by the client application and the database server. It also sets the client's character set, which is the character set for data entered or displayed by a client program.

The NLS_LANG parameter sets the language and territory environment used by both the server session (for example, SQL command execution) and the client application (for example, display formatting in Oracle tools).

You might want to modify the NLS environment dynamically during the session. To do so, you can use the ALTER SESSION statement to change NLS_LANGUAGE, NLS_TERRITORY, and other NLS parameters.

The ALTER SESSION statement modifies only the session environment. The local client NLS environment is not modified, unless the client explicitly retrieves the new settings and modifies its local environment.

See Also:

■ "Setting NLS Parameters" in Oracle Database Globalization Support Guide for details on setting the NLS parameters

■ Oracle Database SQL Language Reference for more information about SQL functions, including the TO_CHAR function

See Also: Oracle Database installation guide for Linux or Windows for information on setting globalization parameters and environmental variables.

See Also: Oracle Database installation guide for Linux or Windows for information on setting globalization parameters and environmental variables.

Note: You cannot modify the setting for the client character set with the ALTER SESSION statement.

Page 252: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-6 SQL Developer Online Help

12.3.3 Language and Territory ParametersSetting different NLS parameters for local territories allows the database session to use different cultural settings. For example, you can set the euro (EUR) as the primary currency and the Japanese yen (JPY) as the secondary currency for a given database session even when the territory is defined as AMERICA.

This topic contains information about the following parameters:

■ NLS_LANGUAGE

■ NLS_TERRITORY

12.3.3.1 NLS_LANGUAGEThe NLS_LANGUAGE parameter can be set to any valid language name and the default is derived from the NLS_LANG setting. NLS_LANGUAGE specifies the default conventions for the following session characteristics:

■ Language for server messages

■ Language for day and month names and their abbreviations (specified in the SQL functions TO_CHAR and TO_DATE)

■ Symbols for equivalents of AM, PM, AD, and BC.

■ Default sorting sequence for character data when ORDER BY is specified. (GROUP BY uses a binary sort unless ORDER BY is specified.)

Example 12–1 and Example 12–2 show the results from setting NLS_LANGUAGE to different values. In Example 12–1, the ALTER SESSION statement is issued to set NLS_LANGUAGE to Italian.

Example 12–1 NLS_LANGUAGE=ITALIAN

ALTER SESSION SET NLS_LANGUAGE=Italian;

-- enter a SELECT to check the format of the output after the ALTER SESSIONSELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees WHERE employee_id IN (111, 112, 113);

You should see results similar to the following:

LAST_NAME HIRE_DATE SALARY------------------------- --------- ----------Sciarra 30-SET-97 962.5Urman 07-MAR-98 975Popp 07-DIC-99 862.5

Note that the month name abbreviations are in Italian.

In Example 12–2, the ALTER SESSION statement is issued to change the language to German.

See Also:

■ Oracle Database installation guides for information on the NLS_LANG environmental variable

■ Oracle Database SQL Language Reference for information on the ALTER SESSION statement.

Page 253: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-7

Example 12–2 NLS_LANGUAGE=GERMAN

ALTER SESSION SET NLS_LANGUAGE=German;

SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees WHERE employee_id IN (111, 112, 113);

You should see results similar to the following:

LAST_NAME HIRE_DATE SALARY------------------------- --------- ----------Sciarra 30-SEP-97 962.5Urman 07-MRZ-98 975Popp 07-DEZ-99 862.5

Note that the language of the month abbreviations has changed to German.

12.3.3.2 NLS_TERRITORYThe NLS_TERRITORY parameter can be set to any valid territory name and the default is derived from the NLS_LANG setting. NLS_TERRITORY specifies the conventions for the following default date and numeric formatting characteristics:

■ Date format

■ Decimal character and group separator

■ Local currency symbol

■ ISO currency symbol

■ Dual currency symbol

The territory can be modified dynamically during the session by specifying the new NLS_TERRITORY value in an ALTER SESSION statement. For example, to change the territory to France during a session, issue the following ALTER SESSION statement:

ALTER SESSION SET NLS_TERRITORY = France;

Modifying NLS_TERRITORY resets all derived NLS session parameters to default values for the new territory. Example 12–3 and Example 12–4 show behavior that results from different settings of NLS_TERRITORY and NLS_LANGUAGE.

Example 12–3 NLS_LANGUAGE=AMERICAN, NLS_TERRITORY=AMERICA

-- set NLS_LANAGUAGE and NLS_TERRITORYALTER SESSION SET NLS_LANGUAGE = American NLS_TERRITORY = America;

-- enter the following SELECT to view the format of the output for currencySELECT TO_CHAR(salary,'L99G999D99') salary FROM employees WHERE employee_id IN (100, 101, 102);

When NLS_TERRITORY is set to AMERICA and NLS_LANGUAGE is set to AMERICAN, results similar to the following should appear:

SALARY

See Also:

■ Oracle Database installation guides for information on the supported languages in the Oracle Database.

■ Oracle Database Globalization Support Guide for more information on supported languages.

Page 254: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-8 SQL Developer Online Help

--------------------$24,000.00$17,000.00$17,000.00

In Example 12–4 an ALTER SESSION statement is issued to change the territory to Germany.

Example 12–4 NLS_LANGUAGE=AMERICAN, NLS_TERRITORY=GERMANY

-- set NLS_TERRITORY to Germany for this sessionALTER SESSION SET NLS_TERRITORY = Germany;

SELECT TO_CHAR(salary,'L99G999D99') salary FROM employees WHERE employee_id IN (100, 101, 102);

You should see results similar to the following:

SALARY-------------------

€24.000,00€17.000,00€17.000,00

Note that the currency symbol has changed from $ to €. The numbers have not changed because the underlying data is the same.

12.3.4 Date and Time ParametersOracle enables you to control the display of date and time, allowing different conventions for displaying the hour, day, month, and year to be handled in local formats. For example, in the United Kingdom, the date is displayed using the DD/MM/YYYY format, while China commonly uses the YYYY-MM-DD format.

This topic contains the following topics:

■ Date Formats

■ Time Formats

12.3.4.1 Date FormatsDifferent date formats are shown in Table 12–1.

See Also:

■ Oracle Database installation guides for information on the supported territories in the Oracle Database.

■ Oracle Database Globalization Support Guide for more information on supported territories

Table 12–1 Examples of Short Date Formats

Country Description Example

Estonia dd.mm.yyyy 28.02.2005

Germany dd.mm.rr 28.02.05

Page 255: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-9

This topic includes the following parameters:

■ NLS_DATE_FORMAT

■ NLS_DATE_LANGUAGE

12.3.4.1.1 NLS_DATE_FORMAT The NLS_DATE_FORMAT parameter defines the default date format to use with the TO_CHAR and TO_DATE functions. The NLS_TERRITORY parameter determines the default value of NLS_DATE_FORMAT. The value of NLS_DATE_FORMAT can be any valid date format mask. For example:

NLS_DATE_FORMAT = "MM/DD/YYYY"

The Oracle default date format may not always corresponds to the cultural specific convention used in a given territory. You can utilize the short date and long date format in SQL, using the 'DS' and 'DL' format masks respectively, to obtain dates in a more localized formats. The examples in this topic show the differences between some of the date formats.

Example 12–5 Using the Default, Short, and Long Date Formats

-- Use an ALTER SESSION statement to change the territory to America, -- and the language to AmericanALTER SESSION SET NLS_TERRITORY = America NLS_LANGUAGE = American;

-- After the session is altered, select the dates with the format masksSELECT hire_date, TO_CHAR(hire_date,'DS') "Short", TO_CHAR(hire_date,'DL') "Long" FROM employees WHERE employee_id IN (111, 112, 113);

The results of the query in Example 12–5 are similar to the following:

HIRE_DATE Short Long--------- ---------- -----------------------------30-SEP-97 9/30/1997 Tuesday, September 30, 199707-MAR-98 3/7/1998 Saturday, March 07, 199807-DEC-99 12/7/1999 Tuesday, December 07, 1999

To add string literals to the date format, enclose the string literal with double quotes. Note that when double quotes are included in the date format, the entire value must be enclosed by single quotes. For example:

NLS_DATE_FORMAT = '"Date: "MM/DD/YYYY'

12.3.4.1.2 NLS_DATE_LANGUAGE The NLS_DATE_LANGUAGE parameter specifies the language for the day and month names produced by the TO_CHAR and TO_DATE functions. NLS_DATE_LANGUAGE overrides the language that is specified implicitly by NLS_LANGUAGE. NLS_DATE_LANGUAGE has the same syntax as the NLS_LANGUAGE parameter, and all supported languages are valid values.

NLS_DATE_LANGUAGE also determines the language used for:

■ Month and day abbreviations returned by the TO_CHAR and TO_DATE functions

China yyyy-mm-dd 2005-02-28

UK dd/mm/yyyy 28/02/2005

US mm/dd/yyyy 02/28/2005

Table 12–1 (Cont.) Examples of Short Date Formats

Country Description Example

Page 256: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-10 SQL Developer Online Help

■ Month and day abbreviations used by the default date format (NLS_DATE_FORMAT)

Example 12–6 shows how to use NLS_DATE_LANGUAGE to set the date language to French.

Example 12–6 NLS_DATE_LANGUAGE=FRENCH, Month and Day Names

-- set NLS_DATE_LANAGUAGE for this user sessionALTER SESSION SET NLS_DATE_LANGUAGE = FRENCH;

-- display the current system dateSELECT TO_CHAR(SYSDATE, 'Day:Dd Month yyyy') FROM DUAL;

You should see output similar to the following, depending on the current system date:

TO_CHAR(SYSDATE,'DAY:DDMON--------------------------Jeudi :06 Octobre 2005

The default date format uses the month abbreviations determined by NLS_DATE_LANGUAGE. For example, if the default date format is DD-MON-YYYY and NLS_DATE_LANGUAGE = FRENCH, then insert a date as follows:

INSERT INTO table_name VALUES ('12-Févr.-1997');

12.3.4.2 Time FormatsDifferent time formats are shown in Table 12–2.

This topic contains information about the following parameters:

■ NLS_TIMESTAMP_FORMAT

■ NLS_TIMESTAMP_TZ_FORMAT

12.3.4.2.1 NLS_TIMESTAMP_FORMAT NLS_TIMESTAMP_FORMAT defines the default date format for the TIMESTAMP and TIMESTAMP WITH LOCAL TIME ZONE data types. The NLS_TERRITORY parameter determines the default value of NLS_TIMESTAMP_FORMAT. The value of NLS_TIMESTAMP_FORMAT can be any valid datetime format mask.

The following example shows a value for NLS_TIMESTAMP_FORMAT:

NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'

See Also: Oracle Database SQL Language Reference for information on date format models

Table 12–2 Examples of Time Formats

Country Description Example

Estonia hh24:mi:ss 13:50:23

Germany hh24:mi:ss 13:50:23

China hh24:mi:ss 13:50:23

UK hh24:mi:ss 13:50:23

US hh:mi:ssxff am 1:50:23.555 PM

Page 257: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-11

12.3.4.2.2 NLS_TIMESTAMP_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT defines the default date format for the TIMESTAMP and TIMESTAMP WITH LOCAL TIME ZONE data types. It is used with the TO_CHAR and TO_TIMESTAMP_TZ functions. The NLS_TERRITORY parameter determines the default value of NLS_TIMESTAMP_TZ_FORMAT. The value of NLS_TIMESTAMP_TZ_FORMAT can be any valid datetime format mask.

The format value must be surrounded by quotation marks. For example:

NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF TZH:TZM'

In Example 12–7 the TO_TIMESTAMP_TZ function uses the format value that was specified for NLS_TIMESTAMP_TZ_FORMAT.

Example 12–7 Setting NLS_TIMESTAMP_TZ_FORMAT

-- display August 20, 2005 using the format of NLS_TIMPSTAMP_TZ_FORMATSELECT TO_TIMESTAMP_TZ('2005-08-20, 05:00:00.55 America/Los_Angeles', 'yyyy-mm-dd hh:mi:ss.ff TZR') "TIMESTAMP_TZ Format" FROM DUAL;

You should see output similar to the following:

TIMESTAMP_TZ Format--------------------------------------------------------20-AUG-05 05.00.00.550000000 AM AMERICA/LOS_ANGELES

12.3.5 Calendar DefinitionsThis topic includes the following topics:

■ Calendar Formats

■ NLS_CALENDAR

12.3.5.1 Calendar FormatsThe following calendar information is stored for each territory:

■ First Day of the Week on page 12-11

■ First Calendar Week of the Year on page 12-11

■ Number of Days and Months in a Year on page 12-12

■ First Year of Era on page 12-12

12.3.5.1.1 First Day of the Week Some cultures consider Sunday to be the first day of the week. Others consider Monday to be the first day of the week. A German calendar starts with Monday.

The first day of the week is determined by the NLS_TERRITORY parameter.

12.3.5.1.2 First Calendar Week of the Year Some countries use week numbers for scheduling, planning, and bookkeeping. Oracle supports this convention. In the ISO standard, the week number can be different from the week number of the calendar year. For example, 1st Jan 1988 is in ISO week number 53 of 1987. An ISO week always starts on a Monday and ends on a Sunday.

To support the ISO standard, Oracle provides the IW date format element. It returns the ISO week number.

The first calendar week of the year is determined by the NLS_TERRITORY parameter.

Page 258: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-12 SQL Developer Online Help

12.3.5.1.3 Number of Days and Months in a Year Oracle supports six calendar systems in addition to Gregorian, the default:

■ Japanese Imperial—uses the same number of months and days as Gregorian, but the year starts with the beginning of each Imperial Era

■ ROC Official—uses the same number of months and days as Gregorian, but the year starts with the founding of the Republic of China

■ Persian—has 31 days for each of the first six months. The next five months have 30 days each. The last month has either 29 days or 30 days (leap year).

■ Thai Buddha—uses a Buddhist calendar

■ Arabic Hijrah—has 12 months with 354 or 355 days

■ English Hijrah—has 12 months with 354 or 355 days

The calendar system is specified by the NLS_CALENDAR parameter.

12.3.5.1.4 First Year of Era The Islamic calendar starts from the year of the Hegira.

The Japanese Imperial calendar starts from the beginning of an Emperor's reign. For example, 1998 is the tenth year of the Heisei era.

12.3.5.2 NLS_CALENDARMany different calendar systems are in use throughout the world. NLS_CALENDAR specifies which calendar system Oracle uses. The default value is Gregorian. The value can be any valid calendar format name.

NLS_CALENDAR can have one of the following values:

■ Arabic Hijrah

■ English Hijrah

■ Gregorian

■ Japanese Imperial

■ Persian

■ ROC Official (Republic of China)

■ Thai Buddha

In Example 12–8 NLS_CALENDAR is set to English Hijrah.

Example 12–8 NLS_CALENDAR='English Hijrah'

-- set NLS_CALENDAR with ALTER SESSIONALTER SESSION SET NLS_CALENDAR='English Hijrah';

-- display the current system dateSELECT SYSDATE FROM DUAL;

You should see output similar to the following, depending on the current system date:

SYSDATE--------------------24 Ramadan 1422

12.3.6 Numeric and List ParametersThis topic includes the following topics:

Page 259: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-13

■ Numeric Formats

■ NLS_NUMERIC_CHARACTERS

12.3.6.1 Numeric FormatsThe database must know the number-formatting convention used in each session to interpret numeric strings correctly. For example, the database needs to know whether numbers are entered with a period or a comma as the decimal character (234.00 or 234,00). Similarly, applications must be able to display numeric information in the format expected at the client site.

Examples of numeric formats are shown in Table 12–3.

Numeric formats are derived from the setting of the NLS_TERRITORY parameter, but they can be overridden by the NLS_NUMERIC_CHARACTERS parameter.

12.3.6.2 NLS_NUMERIC_CHARACTERSThe NLS_NUMERIC_CHARACTERS parameter specifies the decimal character and group separator. The group separator is the character that separates integer groups to show thousands and millions, for example. The group separator is the character returned by the G number format mask. The decimal character separates the integer and decimal parts of a number. Setting NLS_NUMERIC_CHARACTERS overrides the default values derived from the setting of NLS_TERRITORY. The value can be any two valid numeric characters for the decimal character and group separator.

Any character can be the decimal character or group separator. The two characters specified must be single-byte, and the characters must be different from each other. The characters cannot be any numeric character or any of the following characters: plus (+), hyphen (-), less than sign (<), greater than sign (>). Either character can be a space.

To set the decimal character to a comma and the grouping separator to a period, define NLS_NUMERIC_CHARACTERS as follows:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ",.";

SQL statements can include numbers represented as numeric or text literals. Numeric literals are not enclosed in quotes. They are part of the SQL language syntax and always use a dot as the decimal character and never contain a group separator. Text literals are enclosed in single quotes. They are implicitly or explicitly converted to numbers, if required, according to the current NLS settings.

The following SELECT statement formats the number 4000 with the decimal character and group separator specified in the ALTER SESSION statement:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ",.";SELECT TO_CHAR(4000, '9G999D99') FROM DUAL;

Table 12–3 Examples of Numeric Formats

Country Numeric Formats

Estonia 1 234 567,89

Germany 1.234.567,89

China 1,234,567.89

UK 1,234,567.89

US 1,234,567.89

Page 260: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-14 SQL Developer Online Help

You should see output similar to the following:

TO_CHAR(4--------- 4.000,00

12.3.7 Monetary ParametersOracle enables you to define radix symbols and thousands separators by locales. For example, in the US, the decimal point is a dot (.), while it is a comma (,) in France. Because the amount $1,234 has different meanings in different countries, it is important to display the amount appropriately by locale.

This topic includes the following topics:

■ Currency Formats

■ NLS_CURRENCY

■ NLS_ISO_CURRENCY

■ NLS_DUAL_CURRENCY

12.3.7.1 Currency FormatsDifferent currency formats are used throughout the world. Some typical ones are shown in Table 12–4.

12.3.7.2 NLS_CURRENCYNLS_CURRENCY specifies the character string returned by the L number format mask, the local currency symbol. Setting NLS_CURRENCY overrides the default setting defined implicitly by NLS_TERRITORY. The value can be any valid currency symbol string.

Example 12–9 Displaying the Local Currency Symbol

-- select and format the salary column from employeesSELECT TO_CHAR(salary, 'L099G999D99') "salary" FROM employees WHERE salary > 11000;

You should see output similar to the following:

SALARY---------------------

$024,000.00$017,000.00$017,000.00

Table 12–4 Currency Format Examples

Country Example

Estonia 1 234,56 kr

Germany 1.234,56€

China ¥1,234.56

UK £1,234.56

US $1,234.56

Page 261: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-15

$012,000.00$014,000.00$013,500.00$012,000.00$011,500.00$013,000.00$012,000.00

12.3.7.3 NLS_ISO_CURRENCYNLS_ISO_CURRENCY specifies the character string returned by the C number format mask, the ISO currency symbol. Setting NLS_ISO_CURRENCY overrides the default value defined implicitly by NLS_TERRITORY. The value can be any valid string.

Local currency symbols can be ambiguous. For example, a dollar sign ($) can refer to US dollars or Australian dollars. ISO specifications define unique currency symbols for specific territories or countries. For example, the ISO currency symbol for the US dollar is USD. The ISO currency symbol for the Australian dollar is AUD.

NLS_ISO_CURRENCY has the same syntax as the NLS_TERRITORY parameter, and all supported territories are valid values.

To specify the ISO currency symbol for France, set NLS_ISO_CURRENCY as shown in Example 12–10.

Example 12–10 Setting NLS_ISO_CURRENCY

-- set NLS_ISO_CURRENCY to FranceALTER SESSION SET NLS_ISO_CURRENCY = FRANCE;

-- display the salary of selected employeesSELECT TO_CHAR(salary, 'C099G999D99') "Salary" FROM employees WHERE department_id = 60;

You should see output similar to the following:

Salary--------------------

EUR009,000.00EUR006,000.00EUR004,800.00EUR004,800.00EUR004,200.00

12.3.7.4 NLS_DUAL_CURRENCYUse NLS_DUAL_CURRENCY to override the default dual currency symbol defined implicitly by NLS_TERRITORY. The value can be any valid symbol.

NLS_DUAL_CURRENCY was introduced to support the euro currency symbol during the euro transition period.

12.3.8 Linguistic Sorting and SearchingDifferent languages have their own sorting rules. Some languages are collated according to the letter sequence in the alphabet, some according to the number of stroke counts in the letter, and some are ordered by the pronunciation of the words.

Page 262: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-16 SQL Developer Online Help

Treatment of letter accents also differs among languages. For example, in Danish, Æ is sorted after Z, while Y and Ü are considered to be variants of the same letter.

You can define how to sort data by using linguistic sort parameters. The basic linguistic definition treats strings as sequences of independent characters.

This topic includes the following topics:

■ NLS_SORT

■ NLS_COMP

12.3.8.1 NLS_SORTThe NLS_SORT parameter specifies the collating sequence for ORDER BY queries. It overrides the default NLS_SORT value that is derived from NLS_LANGUAGE. The value of NLS_SORT can be BINARY or any valid linguistic sort name:

NLS_SORT = BINARY | sort_name

If the value is BINARY, then the collating sequence is based on the numeric code of the characters in the underlying encoding scheme. Depending on the data type, this will either be in the binary sequence order of the database character set or the national character set. If the value is a named linguistic sort, sorting is based on the order of the defined sort. Most, but not all, languages supported by the NLS_LANGUAGE parameter also support a linguistic sort with the same name.

You can set the NLS_SORT parameter to change the linguistic sorting behavior of the your SQL session. Spain traditionally treats ch, ll as well as ñ as letters of their own, ordered after c, l and n respectively. Example 12–11 and Example 12–12 illustrate the effect of using a Spanish sort against the employee names Chen and Chung. In Example 12–11, the NLS_SORT parameter is set to BINARY.

In Example 12–11, LIKE is used to specify the records to return with the query. For information on LIKE, see Restricting Data Using the WHERE Clause.

Example 12–11 Setting NLS_SORT to BINARY

-- set the NLS_SORT for this user sessionALTER SESSION SET NLS_SORT=binary;

-- select the last name of those employees whose last name begin with CSELECT last_name FROM employees WHERE last_name LIKE 'C%' ORDER BY last_name;

The output of Example 12–11 appears:

LAST_NAME--------------CabrioCambraultCambraultChenChungColmenares

In Example 12–12, the NLS_SORT parameter is set to SPANISH_M.

Example 12–12 Setting NLS_SORT to Spanish

-- set the NLS_SORT for this user sessionALTER SESSION SET NLS_SORT=spanish_m;

Page 263: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

Working in a Global Environment 12-17

-- select the last name of those employees whose last name begin with CSELECT last_name FROM employees WHERE last_name LIKE 'C%' ORDER BY last_name;

The output of Example 12–12 appears:

LAST_NAME--------------CabrioCambraultCambraultColmenaresChenChung

Note that the order of last names in the output from the SELECT statement in Example 12–11 and Example 12–12 is different.

12.3.8.2 NLS_COMPWhen using comparison operators, characters are compared according to their binary codes in the designated encoding scheme. A character is greater than another if it has a higher binary code. Because the binary sequence of characters may not match the linguistic sequence for a particular language, such comparisons might not be linguistically correct.

The value of the NLS_COMP parameter affects the comparison behavior of SQL operations. The value can be BINARY (default) or LINGUISTIC. You can use NLS_COMP to avoid the cumbersome process of using the NLSSORT function in SQL statements when you want to perform a linguistic comparison instead of a binary comparison. When NLS_COMP is set to LINGUISTIC, SQL operations perform a linguistic comparison based on the value of NLS_SORT.

Example 12–13 and Example 12–14 illustrate the effect of performing a binary comparison follow by a Spanish linguistic sensitive comparison against the employee names. In Example 12–13 the NLS_COMP parameter is set to BINARY while NLS_SORT is set to Spanish.

Example 12–13 Setting NLS_COMP to BINARY

-- set NLS_SORT and NLS_COMP for this user sessionALTER SESSION SET NLS_SORT=spanish_m NLS_COMP=binary;

-- select the last name of those employees whose last name begin with CSELECT last_name FROM employees WHERE last_name LIKE 'C%';

The output of Example 12–13 appears:

LAST_NAME--------------CabrioCambraultCambrault

See Also:

■ Oracle Database Globalization Support Guide for more information on supported linguistic sorts.

Page 264: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Setting up the Globalization Support Environment

12-18 SQL Developer Online Help

ChenChungColmenares

In Example 12–14 the NLS_COMP parameter is set to LINGUISTIC while NLS_SORT is set to Spanish.

Example 12–14 Setting NLS_COMP to BINARY

-- set NLS_SORT and NLS_COMP for this user sessionALTER SESSION SET NLS_SORT=spanish_m NLS_COMP=linguistic;

-- select the last name of those employees whose last name begin with CSELECT last_name FROM employees WHERE last_name LIKE 'C%';

The output of Example 12–14 appears:

LAST_NAME--------------CabrioCambraultCambraultColmenares

Note the difference in the output of Example 12–13 and Example 12–14. In Spanish ch is treated as a separate character following c so ch is excluded when a Spanish linguistic sensitive comparison is performed in Example 12–14.

12.3.8.3 Case and Accent Insensitive SearchingOperations inside a database are sensitive to the case and the accents of the characters. Sometimes you might need to perform case-insensitive or accent-insensitive comparisons. Use the NLS_SORT session parameter to specify a case-insensitive or accent insensitive sort.

To specify a case-insensitive or accent-insensitive sort:

■ Append _CI to an Oracle sort name for a case-insensitive sort. For example:

BINARY_CI: accent sensitive and case insensitive binary sort GENERIC_M_CI: accent sensitive and case insensitive GENERIC_M sort

■ Append _AI to an Oracle sort name for an accent-insensitive and case-insensitive sort. For example:

BINARY_AI: accent insensitive and case insensitive binary sort FRENCH_M_AI: accent insensitive and case insensitive FRENCH_M sort

12.3.9 Length SemanticsIn single-byte character sets, the number of bytes and the number of characters in a string are the same. In multibyte character sets, a character or code point consists of one or more bytes. Calculating the number of characters based on byte lengths can be difficult in a variable-width character set. Calculating column lengths in bytes is called byte semantics, while measuring column lengths in characters is called character semantics.

Page 265: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL and PL/SQL Programming with Unicode

Working in a Global Environment 12-19

Character semantics is useful for defining the storage requirements for multibyte strings of varying widths. For example, in a Unicode database (AL32UTF8), suppose that you need to define a VARCHAR2 column that can store up to five Chinese characters together with five English characters. Using byte semantics, this column requires 15 bytes for the Chinese characters, which are three bytes long, and 5 bytes for the English characters, which are one byte long, for a total of 20 bytes. Using character semantics, the column requires 10 characters.

The expressions in the following list use byte semantics. Note the BYTE qualifier in the VARCHAR2 expression and the B suffix in the SQL function name.

■ VARCHAR2(20 BYTE)

■ SUBSTRB(string, 1, 20)

The expressions in the following list use character semantics. Note the CHAR qualifier in the VARCHAR2 expression.

■ VARCHAR2(20 CHAR)

■ SUBSTR(string, 1, 20)

This topic includes the following topic:

■ NLS_LENGTH_SEMANTICS on page 12-19

12.3.9.1 NLS_LENGTH_SEMANTICSThe NLS_LENGTH_SEMANTICS parameter specifies BYTE (default) or CHAR semantics. By default, the character data types CHAR and VARCHAR2 are specified in bytes, not characters. Hence, the specification CHAR(20) in a table definition allows 20 bytes for storing character data.

NLS_LENGTH_SEMANTICS enables you to create CHAR, VARCHAR2, and LONG columns using either byte or character length semantics. NCHAR, NVARCHAR2, CLOB, and NCLOB columns are always character-based. Existing columns are not affected.

Example 12–15 shows an example of creating a table. When the database character set is WE8MSWIN1252, the last_name column of the table can hold up to 10 Western European characters, occupying a maximum of 10 bytes. When the database character set is Unicode (AL32UTF8), last_name can still hold up to 10 Unicode characters regardless of the language; however, it can occupy a maximum of 40 bytes.

Example 12–15 Length Semantics and CREATE TABLE

CREATE TABLE temp_employees_table( employee_id NUMBER(4), last_name VARCHAR2(10 CHAR), job_id VARCHAR2(9), manager_id NUMBER(4), hire_date DATE, salary NUMBER(7,2), department_id NUMBER(2)) ;

12.4 SQL and PL/SQL Programming with UnicodeSQL is the fundamental language with which all programs and users access data in an Oracle database either directly or indirectly. PL/SQL is a procedural language that combines the data manipulating power of SQL with the data processing power of

See Also:

■ Oracle Database Concepts for more information about length semantics

Page 266: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL and PL/SQL Programming with Unicode

12-20 SQL Developer Online Help

procedural languages. Both SQL and PL/SQL can be embedded in other programming languages.

Oracle Express provides products such as SQL and PL/SQL for inserting and retrieving Unicode data. Data is transparently converted between the database and client programs, which ensures that client programs are independent of the database character set and national character set. In addition, client programs are sometimes even independent of the character data type, such as NCHAR or CHAR, used in the database.

The PL/SQL and SQL engines process PL/SQL programs and SQL statements on behalf of client-side programs such as server-side PL/SQL stored procedures. They allow PL/SQL programs to declare CHAR, VARCHAR2, NCHAR, and NVARCHAR2 variables and to access SQL CHAR and NCHAR data types in the database.

This topic describes Unicode-related features in SQL and PL/SQL that you can deploy for multilingual applications. It includes the following topics:

■ Overview of Unicode

■ SQL NCHAR Data Types

■ Unicode String Literals

12.4.1 Overview of UnicodeUnicode is a universal encoded character set that enables you to store information in any language, using a single character set. Unicode provides a unique code value for every character, regardless of the platform, program, or language.

Unicode has the following advantages:

■ It simplifies character set conversion and linguistic sort functions.

■ It improves performance compared with native multibyte character sets.

■ It supports the Unicode data type based on the Unicode standard.

You can store Unicode characters in an Oracle database in two ways:

■ You can create a Unicode database that enables you to store UTF-8 encoded characters as SQL CHAR data types.

■ You can support multilingual data in specific columns by using Unicode data types. You can store Unicode characters into columns of the SQL NCHAR data types regardless of how the database character set has been defined. The NCHAR data type is an exclusively Unicode data type.

12.4.2 SQL NCHAR Data TypesThere are three SQL NCHAR data types:

■ The NCHAR Data Type on page 12-21

■ The NVARCHAR2 Data Type on page 12-21

See Also:

■ Oracle Database SQL Language Reference for information on SQL

■ Oracle Database PL/SQL Language Reference for information on PL/SQL

Page 267: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

SQL and PL/SQL Programming with Unicode

Working in a Global Environment 12-21

12.4.2.1 The NCHAR Data TypeWhen you define a table column or a PL/SQL variable as the NCHAR data type, the length is always specified as the number of characters. For example, the following statement creates a column with a maximum length of 30 characters:

CREATE TABLE table1 (column1 NCHAR(30));

The maximum number of bytes for the column is determined as follows:

maximum number of bytes = (maximum number of characters) x (maximum number of bytes for each character)

For example, if the national character set is UTF8, then the maximum byte length is 30 characters times 3 bytes for each character, or 90 bytes.

The national character set, which is used for all NCHAR data types, is defined when the database is created. The national character set can be either UTF8 or AL16UTF16. The default is AL16UTF16.

The maximum column size allowed is 2000 characters when the national character set is UTF8 and 1000 when it is AL16UTF16. The actual data is subject to the maximum byte limit of 2000. The two size constraints must be satisfied at the same time. In PL/SQL, the maximum length of NCHAR data is 32767 bytes. You can define an NCHAR variable of up to 32767 characters, but the actual data cannot exceed 32767 bytes. If you insert a value that is shorter than the column length, then Oracle pads the value with blanks to whichever length is smaller: maximum character length or maximum byte length.

12.4.2.2 The NVARCHAR2 Data TypeThe NVARCHAR2 data type specifies a variable length character string that uses the national character set. When you create a table with an NVARCHAR2 column, you specify the maximum number of characters for the column. Lengths for NVARCHAR2 are always in units of characters, just as for NCHAR. Oracle subsequently stores each value in the column exactly as you specify it, if the value does not exceed the column's maximum length. Oracle does not pad the string value to the maximum length.

The maximum column size allowed is 4000 characters when the national character set is UTF8 and 2000 when it is AL16UTF16. The maximum length of an NVARCHAR2 column in bytes is 4000. Both the byte limit and the character limit must be met, so the maximum number of characters that is actually allowed in an NVARCHAR2 column is the number of characters that can be written in 4000 bytes.

In PL/SQL, the maximum length for an NVARCHAR2 variable is 32767 bytes. You can define NVARCHAR2 variables up to 32767 characters, but the actual data cannot exceed 32767 bytes.

The following statement creates a table with one NVARCHAR2 column whose maximum length in characters is 2000 and maximum length in bytes is 4000.

CREATE TABLE table2 (column2 NVARCHAR2(2000));

Note: UTF8 may affect performance because it is a variable-width character set. Excessive blank padding of NCHAR fields decreases performance. Consider using the NVARCHAR data type or changing to the AL16UTF16 character set for the NCHAR data type.

Page 268: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Locale-Dependent SQL Functions with Optional NLS Parameters

12-22 SQL Developer Online Help

12.4.3 Unicode String LiteralsYou can input Unicode string literals in SQL and PL/SQL as follows:

■ Put a prefix N before a string literal that is enclosed with single quote marks. This explicitly indicates that the following string literal is an NCHAR string literal. For example, N'résumé' is an NCHAR string literal. This has the same limitation as enclosing the string literal with single quote marks, where the data can be lost during the conversion to the server's database character set. To avoid the potential loss of data, you can set the environment variable ORA_NCHAR_LITERAL_REPLACE to true. This will transparently replace the N' internally and preserve the text literal for SQL processing. By default, this environment variable is set to false to maintain backward compatibility.

■ Use the NCHR(n) SQL function, which returns a unit of character code in the national character set, which is AL16UTF16 or UTF8. The result of concatenating several NCHR(n) functions is NVARCHAR2 data. In this way, you can bypass the client and server character set conversions and create an NVARCHAR2 string directly. For example, NCHR(32) represents a blank character.

Because NCHR(n) is associated with the national character set, portability of the resulting value is limited to applications that run with the same national character set. If this is a concern, then use the UNISTR function to remove portability limitations.

■ Use the UNISTR('string') SQL function. UNISTR('string') converts a string to the national character set. To ensure portability and to preserve data, include only ASCII characters and Unicode encoding in the following form: \xxxx, where xxxx is the hexadecimal value of a character code value in UTF-16 encoding format. For example, UNISTR('G\0061ry') represents 'Gary'. The ASCII characters are converted to the database character set and then to the national character set. The Unicode encoding is converted directly to the national character set.

The last two methods can be used to encode any Unicode string literals.

12.5 Locale-Dependent SQL Functions with Optional NLS ParametersAll SQL functions whose behavior depends on globalization support conventions allow NLS parameters to be specified. These functions are:

TO_CHARTO_DATETO_NUMBERNLS_UPPERNLS_LOWERNLS_INITCAPNLSSORT

Explicitly specifying the optional NLS parameters for these functions enables the functions to be evaluated independently of the session's NLS parameters. This feature can be important for SQL statements that contain numbers and dates as string literals.

For example, the following query is evaluated correctly if the language specified for dates is AMERICAN:

SELECT last_name FROM employees WHERE hire_date > '01-JAN-1999';

Page 269: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Locale-Dependent SQL Functions with Optional NLS Parameters

Working in a Global Environment 12-23

Such a query can be made independent of the current date language by using a statement similar to the following:

SELECT last_name FROM employees WHERE hire_date > TO_DATE('01-JAN-1999','DD-MON-YYYY', 'NLS_DATE_LANGUAGE = AMERICAN');

In this way, SQL statements that are independent of the session language can be defined where necessary. Such statements are necessary when string literals appear in SQL statements in views, CHECK constraints, or triggers.

All character functions support both single-byte and multibyte characters. Except where explicitly stated, character functions operate character by character, rather than byte by byte.

The rest of this topic includes the following topics:

■ Default Values for NLS Parameters in SQL Functions

■ Specifying NLS Parameters in SQL Functions

■ Unacceptable NLS Parameters in SQL Functions

12.5.1 Default Values for NLS Parameters in SQL FunctionsWhen SQL functions evaluate views and triggers, default values from the current session are used for the NLS function parameters. When SQL functions evaluate CHECK constraints, they use the default values that were specified for the NLS parameters when the database was created.

12.5.2 Specifying NLS Parameters in SQL FunctionsNLS parameters are specified in SQL functions as 'parameter = value'. For example:

'NLS_DATE_LANGUAGE = AMERICAN'

The following NLS parameters can be specified in SQL functions:

NLS_DATE_LANGUAGENLS_NUMERIC_CHARACTERSNLS_CURRENCYNLS_ISO_CURRENCYNLS_DUAL_CURRENCYNLS_CALENDARNLS_SORT

Table 12–5 shows which NLS parameters are valid for specific SQL functions.

Note: Only SQL statements that must be independent of the session NLS parameter values should explicitly specify optional NLS parameters in locale-dependent SQL functions. Using session default values for NLS parameters in SQL functions usually results in better performance.

Table 12–5 SQL Functions and Their Valid NLS Parameters

SQL Function Valid NLS Parameters

TO_DATE NLS_DATE_LANGUAGE,NLS_CALENDAR

Page 270: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Locale-Dependent SQL Functions with Optional NLS Parameters

12-24 SQL Developer Online Help

Example 12–16 illustrates how to use NLS parameters in SQL functions.

Example 12–16 Using NLS Parameters in SQL Functions

SELECT TO_DATE('1-JAN-99', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American') "01/01/99" FROM DUAL;

SELECT TO_CHAR(hire_date, 'DD/MON/YYYY', 'NLS_DATE_LANGUAGE = French') "Hire Date" FROM employees;

SELECT TO_CHAR(SYSDATE, 'DD/MON/YYYY', 'NLS_DATE_LANGUAGE = ''Traditional Chinese'' ') "System Date" FROM DUAL;

SELECT TO_CHAR(13000, '99G999D99', 'NLS_NUMERIC_CHARACTERS = '',.''') "13K" FROM DUAL;

SELECT TO_CHAR(salary, '99G999D99L', 'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''EUR''') salary FROM employees;

SELECT TO_CHAR(salary, '99G999D99C', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_ISO_CURRENCY = Japan') salary FROM employees;

SELECT NLS_UPPER(last_name, 'NLS_SORT = Swiss') "Last Name" FROM employees;

SELECT last_name FROM employees ORDER BY NLSSORT(last_name, 'NLS_SORT = German');

TO_NUMBER NLS_NUMERIC_CHARACTERS,NLS_CURRENCY,NLS_DUAL_CURRENCY,NLS_ISO_CURRENCY,

TO_CHAR NLS_DATE_LANGUAGE,NLS_NUMERIC_CHARACTERS,NLS_CURRENCY,NLS_ISO_CURRENCY,NLS_DUAL_CURRENCY,NLS_CALENDAR

TO_NCHAR NLS_DATE_LANGUAGE,NLS_NUMERIC_CHARACTERS,NLS_CURRENCY,NLS_ISO_CURRENCY,NLS_DUAL_CURRENCY,NLS_CALENDAR

NLS_UPPER NLS_SORT

NLS_LOWER NLS_SORT

NLS_INITCAP NLS_SORT

NLSSORT NLS_SORT

Note: In some languages, some lowercase characters correspond to more than one uppercase character or vice versa. As a result, the length of the output from the NLS_UPPER, NLS_LOWER, and NLS_INITCAP functions can differ from the length of the input.

Table 12–5 (Cont.) SQL Functions and Their Valid NLS Parameters

SQL Function Valid NLS Parameters

Page 271: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Locale-Dependent SQL Functions with Optional NLS Parameters

Working in a Global Environment 12-25

12.5.3 Unacceptable NLS Parameters in SQL FunctionsThe following NLS parameters are not accepted in SQL functions except for NLSSORT:

■ NLS_LANGUAGE

■ NLS_TERRITORY

■ NLS_DATE_FORMAT

NLS_DATE_FORMAT and NLS_TERRITORY_FORMAT are not accepted as parameters because they can interfere with required format masks. A date format must always be specified if an NLS parameter is in a TO_CHAR or TO_DATE function. As a result, NLS_DATE_FORMAT and NLS_TERRITORY_FORMAT are not valid NLS parameters for the TO_CHAR or TO_DATE functions. If you specify NLS_DATE_FORMAT or NLS_TERRITORY_FORMAT in the TO_CHAR or TO_DATE function, then an error is returned.

NLS_LANGUAGE can interfere with the session value of NLS_DATE_LANGUAGE. If you specify NLS_LANGUAGE in the TO_CHAR function, for example, then its value is ignored if it differs from the session value of NLS_DATE_LANGUAGE.

Page 272: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Locale-Dependent SQL Functions with Optional NLS Parameters

12-26 SQL Developer Online Help

Page 273: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-1

Index

Symbols:= assignment operator, 8-6

Aaccelerator keys

for menus, 1-2accelerators (keyboard shortcuts), 1-37Access (Microsoft) connections, 4-3ACCESS_INTO_NULL exception, 8-22Advanced Security for JDBC connection, 1-14AFTER triggers

correlation names and, 10-4specifying, 10-2

aliasestables, 7-6

ALTER INDEX statement, 7-16ALTER TABLE statement, 7-16, 7-17analyzing tables, 1-11anonymous PL/SQL blocks, 8-2apostrophes, 8-7Apply Filter

to display of objects, 1-3, 4-39arrays

PL/SQL, 8-17assignment operator, 8-6assignments

IN OUT parameters, 8-15associations

file types, 4-33attributes

%ROWTYPE, 8-10%TYPE, 8-11

autocommitpreference for database connections, 1-40

autocomplete preferences, 1-6, 1-38autotrace

Autotrace pane, 1-24preferences for, 1-39

BBEFORE triggers

correlation names and, 10-4specifying, 10-2

BEGINblock structure, 8-3

BINARY_DOUBLEdata types, 6-5

BINARY_FLOATdata types, 6-5

bind variablesfor reports, 1-29PL/SQL, 8-21saving to disk on exit, 1-41

blocksanonymous, 8-2BEGIN, 8-3DECLARE, 8-3END, 8-3EXCEPTION, 8-3nesting, 8-1, 8-2structure, 8-3

BODYCREATE PACKAGE SQL statement, 9-3with SQL CREATE PACKAGE statement, 9-3

Booleanliterals, 8-7

breakpointscreating and editing, 4-46

CC number format mask, 12-15calendars

parameter, 12-11CASE expressions

overview, 8-12case sensitivity

identifier, 8-6string literal, 8-7

CASE_NOT_FOUND exception, 8-22century

date format masks, 6-7character data

storing, 6-1character literals, 8-7

quoting, 7-3using in SQL statements, 7-3

character setnational, 12-21

Page 274: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-2

character setsnational, 12-21

chartsuser-defined report example, 1-34

check constraints, 4-17, 5-5how to use, 5-6

Check for Updates feature, 4-1coalescing an index, 1-8code fragments, 1-26code insight, 1-38COLLECTION_IS_NULL exception, 8-22collections

PL/SQL, 8-17column alias

using with SELECT, 7-4column constraints, 5-4column sequences, 4-18columns

accessing in triggers, 10-3data types, 5-2decrypting, 1-12encrypting, 1-12listing in an UPDATE trigger, 10-4normalizing column data, 1-12unique key, 5-5

commentsin PL/SQL, 8-4

COMMIT statement, 7-8, 7-9Compact option for shrinking a table, 1-11comparison operators

BETWEEN, 7-4equality, 7-4IN, 7-4LIKE, 7-4NULL, 7-4

compilingfunction, 1-8

with debug, 1-8procedure, 1-9

with debug, 1-9view, 1-13

completionSQL Developer preferences, 1-6, 1-38

completion insight, 1-38composite keys

foreign, 5-6conditional predicates

trigger bodies, 10-4configuring, 2-12

third-party databases, 2-12configuring file type associations, 4-33connections

creating, editing, or selecting, 4-2explanation, 1-13Microsoft Access, 4-3Microsoft SQL Server, 4-4MySQL, 4-3Oracle Database, 4-3

CONSTANTfor declaring constants, 8-4

constantsdeclaring, 8-4declaring in PL/SQL, 8-4

constraintscheck, 4-17, 5-5column, 5-4disabled, 1-30ensuring data integrity, 5-3NOT NULL, 8-8table-level, 5-4types, 5-4unique, 4-16

control structuresPL/SQL, 8-11

converted modelcorrecting errors in, 2-16creating and customizing, 2-16

correlation names, 10-3NEW, 10-3OLD, 10-3when preceded by a colon, 10-4

CREATEwith PROCEDURE statement, 9-2

CREATE FUNCTION statement, 9-2CREATE INDEX statement, 7-16CREATE PROCEDURE statement, 9-2CREATE SEQUENCE statement, 7-17CREATE statement

packages, 9-3with FUNCTION, 9-2

CREATE SYNONYM statement, 7-18CREATE TABLE statement, 7-15CREATE TRIGGER statement, 10-1creating

functions, 9-2packages, 9-3procedures, 9-2

creating a constraintusing SQL statement, 7-16

creating a tableusing SQL statement, 7-15

creating an indexSQL statement, 7-16

creating indexes for use with constraints, 5-7currencies

formats, 12-14CURSOR_ALREADY_OPEN exception, 8-22cursors

definition, 8-17explicit, 8-17implicit, 8-17

custom export delimiterpreference for database connections, 1-41

customizing SQL Developersetting preferences, 1-36

Ddata

entering and modifying, 1-15

Page 275: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-3

integrity checking on input, 6-3data definition language (DDL)

SQL statements, 7-15data integrity rules

as constraints, 5-4data manipulation language

described, 7-7data structures

PL/SQL, 8-17data types

BINARY_DOUBLE, 6-5BINARY_FLOAT, 6-5CHAR, 6-1character, 6-1creating, 4-24description, 5-2floating-point number, 6-4in table columns, 5-2NCHAR, 6-1NUMBER, 6-3numeric, 6-2NVARCHAR2, 6-1overview, 6-1VARCHAR2, 6-1

database connectionscreating, editing, or selecting, 4-2explanation, 1-13Microsoft Access, 4-3Microsoft SQL Server, 4-4MySQL, 4-3Oracle Database, 4-3

database links, 1-7creating or editing, 4-7

database objects, 1-7exporting, 4-34managing, 5-1naming, 5-1searching for, 1-27

database resident program units, 9-1database triggers, 10-1date and time data

storing, 6-5date and time parameters, 12-8DATE data type, 6-5date formats, 12-8, 12-9dates

ISO standard, 12-11NLS_DATE_LANGUAGE parameter, 12-10

datetimeliterals, 8-7

daysformat element, 12-10

DB Object Search pane, 1-27DBMS_OUTPUT

procedures for displaying output in PL/SQL, 8-9user-defined report example, 1-35

DBMS_OUTPUT packagedisplaying output, 8-9displaying output from PL/SQL, 9-5using PUT_LINE to display output, 8-9

DBMS_OUTPUT pane, 1-24debugging PL/SQL function or procedure, 1-16

dialog box, 4-45remote debugging, 1-18

declarationsconstants, 8-4exceptions in PL/SQL, 8-23PL/SQL %ROWTYPE and %TYPE, 8-10PL/SQL subprograms, 8-15using NOT NULL constraint, 8-8

declarative partof PL/SQL block, 8-3

DECLAREblock structure, 8-3

decryptiondata in a table column, 1-12

DELETE statement, 7-7, 7-8column values and triggers, 10-4

dependenciesschema objects

trigger management, 10-6deployment

after database migration, 2-26DESCRIBE command

SQL*Plus, 11-3design considerations

Oracle Database, 5-1destination schema

schema differences, 4-47dialog boxes and tabs, 4-1directories (directory objects), 1-7disabled constraints, 1-30disabled trigger

definition, 10-4disabling

triggers, 10-4displaying output

from PL/SQL, 8-9setting SERVEROUTPUT, 8-9, 9-5using DBMS_OUTPUT.PUT_LINE, 8-9

displaying PL/SQL outputwith DBMS_OUTPUT, 8-9

distributed databasestriggers and, 10-6

dot notation, 8-11drivers

third-party JDBC, 1-40DROP INDEX statement, 7-16DROP SEQUENCE statement, 7-17DROP SYNONYM statement, 7-18DROP TABLE statement, 7-17dropping

indexes, 5-10dropping a sequence

using SQL statement, 7-17dropping a synonym

using SQL statement, 7-18dropping a table

using SQL statement, 7-17DUAL

Page 276: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-4

dummy table, 7-10dummy table

DUAL, 7-10DUP_VAL_ON_INDEX exception, 8-22dynamic HTML

user-defined report example, 1-35dynamic SQL, 8-19

Eenabled trigger

definition, 10-4enabling

triggers, 10-4encryption

data in a table column, 1-12END

block structure, 8-3ensuring data integrity

with constraints, 5-3entering data in tables, 1-15error handling

PL/SQL, 8-21errors

parse exceptions, 2-16Excel

importing data, 4-6EXCEPTION

block structure, 8-3exception handlers

PL/SQL, 8-21exception-handling part

of PL/SQL block, 8-3exceptions

advantages of PL/SQL, 8-23declaring in PL/SQL, 8-23during trigger execution, 10-4list of predefined in PL/SQL, 8-22predefined in PL/SQL, 8-21scope rules in PL/SQL, 8-23

executable partof PL/SQL block, 8-3

execution plan, 1-24EXIT-WHEN statement

overview, 8-14EXPLAIN PLAN

execution plan, 1-24exporting

applying filters, 4-36database objects, 4-34reports, 1-28table data, 1-11, 4-36

extensions, 4-37SQL Developer, 1-42user-defined, 1-40

external tablesproperties, 4-22

external tools, 1-6, 4-37

FF10 key

for File menu, 1-2FALSE value, 8-7file I/O, 9-5file types

associating with SQL Developer, 4-33file-oriented development

SQL Worksheet right-click operations, 1-21filter

applying, 1-3, 4-39clearing, 1-3, 4-39

floating-point numberdata types, 6-4

floating-point numbers, 6-2folders

for user-defined reports, 1-34, 4-27FOR EACH ROW clause, 10-3foreign key

referential integrity between tables, 5-6foreign keys, 4-16format elements

day, 12-10month, 12-10

format masks, 12-13TO_DATE function, 6-7

formatscurrency, 12-14date, 12-9numeric, 12-13time, 12-10

Freeze Viewpinning an object’s display, 1-4, 1-15, 1-28

FROM clause, 4-29FUNCTION

with CREATE statement, 9-2functions

compiling, 1-8compiling with debug, 1-8creating, 4-10, 9-2debugging, 4-45execute, 9-3managing, 9-3overview, 9-1running, 4-45SQL aggregate, 7-14SQL arithmetic operators, 7-12SQL character, 7-11SQL date, 7-13SQL numeric, 7-12

GGather Schema Statistics menu command, 1-14globalization support

altering NLS parameter settings, 12-4calendar definitions, 12-11date and time parameter settings, 12-8default values for NLS parameters in SQL

functions, 12-23

Page 277: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-5

features, 12-1language and territory parameter settings, 12-6linguistic sorting and searching, 12-15locale, 12-5monetary parameter settings, 12-14National Language Support (NLS) features, 12-1NLS_LANG parameter setting, 12-5numeric and list parameter settings, 12-12overview, 12-1programming with unicode, 12-19setting up the environment, 12-4specifying values for NLS parameters in SQL

functions, 12-23unacceptable NLS parameters in SQL

functions, 12-25GOTO statement

overview, 8-15graphical user interface (GUI), 1-2, 2-28GROUP BY clause, 4-30

HHAVING clause, 4-30help

PDF file containing online help, 1-48using the online help, 1-47

HELP commandSQL*Plus, 11-2

HTMLdynamic (user-defined report), 1-35

Iidentifier collection

PL/Scope, 1-14identifiers

maximum length, 8-6IF-THEN-ELSE statement

overview, 8-11importing

Excel data, 4-6reports, 1-28

indexes, 4-17ascending, 5-7choose the correct order of columns for

composites, 5-9coalescing, 1-8column, 5-7concatenated, 5-7creating for use with constraints, 5-7creating or editing, 4-8descending, 5-7drop if not required, 5-10dropping, 5-10explanation, 1-8function-based, 5-7guidelines, 5-8limit the number, 5-9making unusable, 1-8managing, 5-6

normal type, 5-7order of columns, 5-9rebuilding, 1-8single column, 5-7types, 5-7

index-organized tablesproperties, 4-21

initializationusing DEFAULT, 8-8

INSERT statement, 7-7column values and triggers, 10-3

integrity constraintsCHECK, 5-6triggers vs., 10-5

INTERVAL DAY TO SECOND data type, 6-5INTERVAL YEAR TO MONTH data type, 6-5introduction, 11-1

SQL Developer, 1-1INVALID_CURSOR exception, 8-22INVALID_NUMBER exception, 8-22ISO standard date format, 12-11

JJDBC drivers, 1-40joins

displaying data from multiple tables with SELECT, 7-6

Kkeyboard shortcuts, 1-37keywords

use in PL/SQL, 8-6

Llanguage support, 12-2length semantics, 12-18linguistic sorts

parameters, 12-15link

database, 4-7list parameter, 12-12literals

Boolean, 8-7character, 8-7datetime, 8-7numeric, 8-7string, 8-7types of PL/SQL, 8-7

LOB parameters, 4-19local subprograms, 9-2locale

globalization support, 12-5locking a table, 1-11LOGIN_DENIED exception, 8-22LOOP statement

overview, 8-13lowercase characters in object names

quotation marks required, 4-1

Page 278: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-6

Mmanaging database objects

overview, 5-1managing indexes, 5-6managing tables, 5-2materialized view logs, 1-9

creating and editing, 4-9materialized views, 1-9

options when creating or editing, 4-31maximum size

identifier, 8-6Microsoft Access

capturing using exporter tool, 2-15configuring before migrating, 2-12creating data files, 2-18turning off security, 2-13

Microsoft Access connections, 4-3Microsoft Excel

importing data, 4-6Microsoft SQL Server, 2-12

creating data files, 2-18third-party JDBC drivers, 1-40

Microsoft SQL Server connections, 4-4migration

architecture, 2-5before you start (general), 2-10before you start (source-specific), 2-12deployment after migrating, 2-26introduction and main topics, 2-1overview, 2-4planning for, 2-6quick start, 2-2required roles and privileges, 2-11

migration planpreparing, 2-6

migration repositorycreating database user for, 2-10

MOD_PLSQLOWA output, 1-25

modifying a constraintusing SQL statement, 7-16

modifying a tableusing SQL statement, 7-17

modifying an indexSQL statement, 7-16

modifying data in tables, 1-15modularity, 9-3monetary parameters, 12-14months

format element, 12-10moving a table to another tablespace, 1-11multi-line comments, 8-4MySQL

configuring before migrating, 2-15creating data files, 2-18third-party JDBC drivers, 1-40

MySQL connections, 4-3zero date handling, 4-4

Nnational character literals

quoting, 7-3national character set, 12-21National Language Support (NLS)

features, 12-1globalization support, 12-1

NCHAR data type, 6-1, 12-21NCHR SQL function, 12-22nested tables

PL/SQL, 8-17nesting

block, 8-1, 8-2NEW correlation name, 10-3NLS parameters

default values in SQL functions, 12-23settings, 12-4specifying in SQL functions, 12-23unacceptable in SQL functions, 12-25

NLS_CALENDAR parameter, 12-12NLS_COMP parameter, 12-17NLS_CURRENCY parameter, 12-14NLS_DATE_FORMAT parameter, 6-7, 12-9NLS_DATE_LANGUAGE parameter, 12-9NLS_DUAL_CURRENCY parameter, 12-15NLS_INITCAP SQL function, 12-22NLS_ISO_CURRENCY parameter, 12-15NLS_LANG parameter, 12-5

choosing a locale, 12-5NLS_LANGUAGE parameter, 12-6NLS_LOWER SQL function, 12-22NLS_NUMERIC_CHARACTERS parameter, 12-13NLS_SORT parameter, 12-16NLS_TERRITORY parameter, 12-7NLS_TIMESTAMP_FORMAT parameter

parametersNLS_TIMESTAMP_FORMAT, 12-10, 12-11

NLS_UPPER SQL function, 12-22NLSSORT SQL function, 12-22NO_DATA_FOUND exception, 8-22normalizing

column data, 1-12NOT NULL constraint

using in variable declaration, 8-8NOT_LOGGED_ON exception, 8-22NUMBER data type, 6-3numeric data types, 6-2numeric formats, 12-13numeric literals, 8-7numeric parameters, 12-12NVARCHAR2 data type, 6-1, 12-21

Oobject search

DB Object Search pane, 1-27objects

database, 1-7exporting, 4-34

offline data transfer, 2-17

Page 279: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-7

offline generation of Oracle DDL, 4-40OLD correlation name, 10-3online help

PDF file containing, 1-48using, 1-47

open SQL Worksheet automaticallypreference for database connections, 1-41

Oracle Databasedesign considerations, 5-1

Oracle Database connections, 4-3Oracle Web Agent (OWA), 1-25ORDER BY clause, 4-30

using with SELECT, 7-5overview, 11-1

data types, 6-1functions, 9-1globalization support, 12-1managing database objects, 5-1packages, 9-1PL/SQL, 8-1procedures, 9-1SQL, 7-1SQL Developer, 1-1SQL*Plus, 11-1subprograms, 9-1triggers, 10-1

OWA_OUTPUT pane, 1-25

PPACKAGE

with SQL CREATE statement, 9-3package

writing with PL/SQL, 9-3PACKAGE BODY

with SQL CREATE statement, 9-3packaged subprograms, 9-2packages

accessing variables, 9-4body, 9-2creating, 4-10, 9-3debugging, 4-45guidelines for writing, 9-3hidden declarations, 9-3overview, 9-1overview of Oracle supplied, 9-5product-specific, 9-5running, 4-45specification, 9-2understanding, 9-2variables, 9-4visibility of contents, 9-3

parameter insight, 1-38parameters

calendar, 12-11linguistic sorts, 12-15monetary, 12-14NLS_CALENDAR, 12-12NLS_COMP, 12-17NLS_CURRENCY, 12-14

NLS_DATE_FORMAT, 12-9NLS_DATE_LANGUAGE, 12-9NLS_DUAL_CURRENCY, 12-15NLS_ISO_CURRENCY, 12-15NLS_LANG, 12-5NLS_LANGUAGE, 12-6NLS_NUMERIC_CHARACTERS, 12-13NLS_SORT, 12-16NLS_TERRITORY, 12-7numeric, 12-12setting, 12-5time and date, 12-8time zone, 12-10, 12-11

parse exception errors, 2-16partitioned tables

partition definitions, 4-21partitioning options, 4-20subpartitioning options (templates), 4-21

PDF file containing online help, 1-48performance

index column order, 5-9pinning an object’s display, 1-4, 1-15, 1-28PL/Scope

toggling identifier collection, 1-14PL/SQL, 8-1

%ROWTYPE attribute, 8-10%TYPE attribute, 8-10anonymous blocks, 8-2arrays, 8-17assigning values with SELECT INTO, 8-9assignment operator, 8-6bind variables, 8-21block structure, 8-3collections, 8-17comments, 8-4control structures, 8-11cursor, 8-17data structures, 8-17declarations using DEFAULT, 8-8declarations using NOT NULL, 8-8declaring constants, 8-4declaring variables, 8-4DEFAULT keyword for assignments, 8-8displaying output, 8-9, 9-5entering and executing code, 8-2error handling, 8-21exception handling, 8-21identifiers, 8-5input data, 8-9literals, 8-7local subprograms, 8-15nested tables, 8-17output data, 8-9overview of, 8-1processing queries, 8-19program units, 8-1programming with unicode, 12-19records, 8-18SELECT INTO, 8-9stored procedures, 8-2

Page 280: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-8

trigger bodies, 10-3using dynamic SQL, 8-19using features, 8-2variable assignments, 8-6writing reusable code, 9-3

PL/SQL and SQL and Unicode, 12-20PL/SQL packages

creating, 4-10PL/SQL subprograms

creating, 4-10debugging, 4-45

breakpoints, 4-46running, 4-45

plsql-dbms_outputuser-defined report example, 1-35

preferencescustomizing SQL Developer, 1-36

primary key, 4-15for a table, 5-5

PRIMARY KEY constraintsmultiple columns in, 5-5UNIQUE key constraint vs., 5-5

private database links, 1-7private synonyms, 1-10, 4-12privileges

needed on triggers, 10-6required for migration, 2-11triggers, 10-6

Probe debugger, 1-45PROCEDURE

with CREATE statement, 9-2procedures, 8-2

called by triggers, 10-6compiling, 1-9compiling with debug, 1-9creating, 4-10, 9-2execute, 9-3managing, 9-3overview, 9-1stored procedures, 8-2

program units, 8-1, 9-3PROGRAM_ERROR exception, 8-22projects

creating plan, 2-9pseudocolumns

ROWNUM, 7-10SYSDATE, 7-10USER, 7-10using in SQL statements, 7-10

public database links, 1-7public synonyms, 1-10, 4-12PUT_LINE

displaying output with, 8-9

Qqueries

in DML, 7-7query builder, 4-43quotation marks

for name with lowercase characters, special characters, or spaces, 4-1

quoting character literals, 7-3

Rraising exceptions

triggers, 10-4Raptor

former code name for SQL Developer, 1-1rebuilding an index, 1-8recompiling

view, 1-13records

definition, 8-10PL/SQL, 8-18

Recycle bin, 1-10remote debugging, 1-18report navigator, 1-27reports, 1-27

bind variables for, 1-29exporting, 1-28importing, 1-28shared, 1-28user-defined

chart example, 1-34creating and editing, 4-26dynamic HTML example, 1-35explanation, 1-34folders for, 1-34, 4-27UserReports.xml, 1-34

reserved wordssyntactic meaning in PL/SQL, 8-6

restrictionssystem triggers, 10-6

rolesrequired for migration, 2-11

ROLLBACK statement, 7-8, 7-9row triggers

defining, 10-3timing, 10-2UPDATE statements and, 10-4

ROWNUMpseudocolumn, 7-10

ROWTYPE attributedeclaring, 8-10

ROWTYPE_MISMATCH exception, 8-22running PL/SQL function or procedure, 1-16

dialog box, 4-45

Sscale

greater than precision, 6-3schema

description, 5-1XML, 1-13, 4-33

schema differencesdifferences between two schemas, 4-47

schema objects, 1-7

Page 281: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-9

description, 5-1tables, 5-2

schema statisticsgathering, 1-14

scientific notation, 8-7scope

exceptions in PL/SQL, 8-23scratch editor, 2-32script runner, 1-23scripts

running, 1-23security

Advanced Security for JDBC connection, 1-14SELECT clause, 4-29SELECT INTO

PL/SQL, 8-9SELECT statements, 7-2SELF_IS_NULL exception, 8-22sequences, 1-10

creating and editing, 4-11description, 5-10for populating table columns, 4-18managing, 5-10using in SQL statements, 7-11

SERVEROUTPUTdisplaying output from PL/SQL, 8-9setting ON to display output, 9-5

SET commandfor SQL*Plus settings, 11-3

shared reports, 1-28shortcut keys

accelerator key mappings, 1-37for menus, 1-2

shrinking a table, 1-11single record view, 4-49single-line comments, 8-4snippets, 1-26

user-defined, 1-26sorting

specifying nondefault linguistic sorts, 12-16, 12-17

source databasecapturing, 2-15

source schemaschema differences, 4-47

source typesdescription, 9-1managing, 9-1

spaces in object namesquotation marks required, 4-1

special characters in object namesquotation marks required, 4-1

splitdata pane for a table or view, 1-16

SPOOL commandSQL*Plus, 11-4

SQLaggregate functions, 7-14arithmetic operators, 7-12character functions, 7-11

character literals in statements, 7-3column alias, 7-4committing changes with COMMIT, 7-9comparison operators, 7-4creating a constraint, 7-16creating a table, 7-15creating an index, 7-16data definition language (DDL), 7-15data manipulation language (DML), 7-7date functions, 7-13deleting rows in a table with DELETE, 7-8displaying data from multiple tables, 7-6dropping a sequence, 7-17dropping a synonym, 7-18dropping a table, 7-17dynamic, 8-19functions, 7-10inserting rows in a table with INSERT, 7-7joining tables in SELECT, 7-6modifying a constraint, 7-16modifying a table, 7-17modifying an index, 7-16numeric functions, 7-12ORDER BY clause in SELECT, 7-5overview of, 7-1PL/SQL and, 8-1programming with unicode, 12-19pseudocolumns, 7-10querying data, 7-2retrieving data from tables, 7-2SELECT statement, 7-2sequences, 7-10, 7-11statement types, 7-2transaction control statements, 7-8types of statements, 7-2undoing changes with ROLLBACK, 7-9updating data in a table with UPDATE, 7-8using with Oracle Database, 7-1WHERE clause in SELECT, 7-4

SQL Developer archive files, 1-47SQL Developer preferences, 1-36SQL file

creating, 4-12SQL functions

default values for NLS parameters, 12-23NCHR, 12-22NLS_INITCAP, 12-22NLS_LOWER, 12-22NLS_UPPER, 12-22NLSSORT, 12-22specifying NLS parameters, 12-23TO_CHAR, 12-22TO_DATE, 12-22TO_NUMBER, 12-22unacceptable NLS parameters, 12-25UNISTR, 12-22

SQL scriptsrunning, 1-23

SQL Serverconfiguring, 2-12

Page 282: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-10

creating data files, 2-18third-party JDBC drivers, 1-40

SQL Server connections, 4-4SQL statements

categories, 7-2in trigger bodies, 10-3, 10-5not allowed in triggers, 10-5

SQL Worksheetopening automatically on database

connection, 1-41using, 1-19

SQL*Plusdefining a variable, 11-5DESCRIBE command, 11-3displaying help, 11-2entering commands and statements, 11-2executing commands and statements, 11-2exiting, 11-2HELP command, 11-2location of executable, 4-50location of executable (SQL Developer

preference), 1-39, 1-45overview, 11-1prompting for a variable, 11-4running SQL scripts, 11-3SET command, 11-3settings, 11-3SPOOL command, 11-4spooling output, 11-4starting from the operating system command

prompt, 11-2using, 1-25using variables, 11-4

SQLDEVELOPER_USER_DIR location, 1-46sqldevnnnnn.sql files (archive files), 1-47standalone subprograms, 9-2

execute, 9-3managing, 9-3

statement triggersconditional code for statements, 10-4specifying SQL statement, 10-2timing, 10-2UPDATE statements and, 10-4valid SQL statements, 10-5

statisticscomputing table and column, 1-11estimating table and column, 1-11gathering schema, 1-14

storage options, 4-18STORAGE_ERROR exception, 8-22stored procedures, 8-2stored subprograms, 9-2

in Oracle database, 9-2storing, 6-2string literals, 8-7

Unicode, 12-22Structured Query Language (SQL), 7-1subpartitions

templates, 4-21subprograms

creating, 4-10debugging, 4-45declaring PL/SQL, 8-15functions, 9-2local, 9-2managing, 9-3overview, 9-1packaged, 9-2procedures, 9-2running, 4-45standalone, 9-2stored, 9-2

SUBSCRIPT_BEYOND_COUNT exception, 8-22SUBSCRIPT_OUTSIDE_LIMIT exception, 8-22substitution variables, 1-23Synonyms, 1-10synonyms, 1-10

creating and editing, 4-12description, 5-11managing, 5-11

SYS_INVALID_ROWID exception, 8-22SYSDATE

pseudocolumn, 7-10

Ttable-level constraints, 5-4tables, 1-10

aliases, 7-6analyzing, 1-11compacting, 1-11computing statistics, 1-11creating and editing, 4-14creating quickly, 4-13decrypting column data, 1-12encrypting column data, 1-12entering and modifying data, 1-15estimating statistics, 1-11exporting data, 1-11, 4-36external

properties, 4-22index-organized

properties, 4-21locking, 1-11managing, 5-2moving to another tablespace, 1-11normalizing column data, 1-12partitioned

partition definitions, 4-21partitioning options, 4-20subpartitioning options (templates), 4-21

primary key, 5-5shrinking, 1-11splitting the data pane, 1-16temporary, 4-14truncating, 1-11validating structure, 1-11

temporary tables, 4-14territory definition, 12-7territory support, 12-2

Page 283: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-11

third-party databasesconfiguring before migrating, 2-12

third-party JDBC drivers, 1-40time and date data

storing, 6-5time and date parameters, 12-8time zone

parameters, 12-10, 12-11TIMEOUT_ON_RESOURCE exception, 8-22TIMESTAMP data type, 6-5TIMESTAMP WITH LOCAL TIME ZONE data

type, 6-5TIMESTAMP WITH TIME ZONE data type, 6-5tnsnames.ora file, 1-13TO_CHAR SQL function, 12-22

default date format, 12-9group separator, 12-13language for dates, 12-9spelling of days and months, 12-10

TO_DATE function, 6-7TO_DATE SQL function, 12-22

default date format, 12-9language for dates, 12-9spelling of days and months, 12-10

TO_NUMBER SQL function, 12-22Toggle PL/Scope Identifier Collection menu

command, 1-14TOO_MANY_ROWS exception, 8-23tools

external, 1-6, 4-37transaction control statements, 7-8transactions

transaction control statements, 7-8transferring

data offline, 2-17translation scratch editor, 2-32triggers, 1-12

accessing column values, 10-3AFTER, 10-2, 10-4AFTER option, 10-2as a stored PL/SQL subprogram, 10-1BEFORE, 10-2, 10-4BEFORE option, 10-2body, 10-5column list in UPDATE, 10-4conditional predicates, 10-4controlling when fired, 10-2correlation names, 10-3creating, 10-1, 10-5creating and editing, 4-23designing, 10-5detecting the operation that fired a trigger, 10-4disabled

definition, 10-4disabling, 10-4enabled

definition, 10-4enabling, 10-4error conditions and exceptions, 10-4errors, 10-4

events, 10-2exceptions, 10-4fired multiple times with BEFORE option, 10-3FOR EACH ROW clause, 10-3FOR EACH ROW option, 10-3guidelines for design, 10-5illegal SQL statements, 10-5integrity constraints vs., 10-5naming, 10-2NEW column value, 10-3OLD column value, 10-3overview, 10-1privileges, 10-6privileges needed, 10-6procedures and, 10-6remote dependencies and, 10-6restrictions, 10-3, 10-5row, 10-3triggering statement, 10-2types, 10-2WHEN clause, 10-3when fired, 10-2

TRUE value, 8-7truncating a table, 1-11tutorial

creating objects for a small database, 3-1TYPE attribute

declaring, 8-11types

creating, 4-24

UUnicode

PL/SQL and SQL, 12-20programming, 12-2programming with SQL and PL/SQL, 12-19string literals, 12-22

unique constraints, 4-16unique key

on a column, 5-5UNIQUE key constraints

PRIMARY KEY constraint vs., 5-5UNISTR SQL function, 12-22unusable indexes, 1-8UPDATE statement, 7-7, 7-8

column values and triggers, 10-4triggers and, 10-4

updateschecking for SQL Developer updates, 4-1

USERpseudocolumn, 7-10

user information directory (SQLDEVELOPER_USER_DIR), 1-46

user interface (UI), 1-2, 2-28user-defined extensions, 1-40user-defined reports

chart example, 1-34creating and editing, 4-26dynamic HTML example, 1-35

Page 284: Oracle SQL Developer Online Help · Oracle SQL Developer Online Help Release 1.2 ... 3.6 Creating a PL/SQL Procedure ... 4.34 Configure File Type Associations ...

Index-12

explanation, 1-34folders for, 1-34, 4-27UserReports.xml, 1-34

user-defined snippets, 1-26user-defined types

creating, 4-24UserReports.xml, 1-34users

creating and editing, 4-25UTL_FILE package, 9-5

VVALUE_ERROR exception, 8-23VARCHAR2 data type, 6-1variables

accessing in packages, 9-4bind, 8-21declaring in PL/SQL, 8-4passing as IN OUT parameter, 8-15using with SQL*Plus, 11-4

views, 1-12compiling, 1-13creating and editing, 4-28description, 5-10FROM clause, 4-29GROUP BY clause, 4-30HAVING clause, 4-30managing, 5-10options when creating or editing, 4-31ORDER BY clause, 4-30recompiling, 1-13SELECT clause, 4-29splitting the data pane, 1-16WHERE clause, 4-30

visibilityof package contents, 9-3

WWHEN clause, 10-3

cannot contain PL/SQL expressions, 10-3correlation names, 10-4

WHERE clause, 4-30using with SELECT, 7-4

WHILE-LOOP statementoverview, 8-13

XXML schema, 1-13

creating, 4-33

Zzero date handling

MySQL connections, 4-4ZERO_DIVIDE exception, 8-23


Recommended