
                                README FILE

                                 SQL*Plus

This file discusses the following topics:

        A. New or modified features and fixed bugs
        B. New or modified requirements
        C. New or modified installation procedures
        D. New or modified upgrading procedures
        E. Restrictions and workarounds

                           ~~~~~~~~~~~~~~~~~~~~~~~~~

A. New or Modified Features and Fixed Bugs
------------------------------------------

A.1. New Features

New Features in SQL*Plus 3.2
----------------------------

 - The ACCEPT command has three new clauses, DATE, FORMAT and DEFAULT.

   New syntax:  ACC[EPT] variable [NUM[BER]|CHAR|DATE] [FOR[MAT] format]
                   [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]

   The DATE clause uses a CHAR datatype, but expects the reply to be a
   valid DATE.

   The FORMAT clause specifies the input format for the reply.  The
   format element must be a text constant such as A10 or 9.999.

   Oracle date formats such as 'dd/mm/yy' are valid when the datatype
   is DATE.  DATE without a specified format defaults to the Oracle
   NLS_DATE_FORMAT of the current session.

   The reply must be in the specified datatype or format if defined.
   If the reply is not in the correct format, ACCEPT returns an error
   message and prompts again.

   The DEFAULT clause sets the default value if a reply is not given.


 - The COMPUTE command now has an optional LABEL clause.

   New syntax:  COMP[UTE] [{function [LAB[EL] text]} ...
                   OF {expr|column|alias} ...
                   ON {expr|column|alias|REPORT|ROW} ...]

   The LABEL clause defines the label to be printed for the computed
   value.  If no label is defined, the default is the unabbreviated
   function keyword.  If the label name contains spaces or
   punctuation, you must enclose it with single quotes.  The label
   prints left justified and truncates to the column width.

   If you repeat a function in a COMPUTE command, SQL*Plus prints the
   label from the first occurrence of the function.


 - The DEL command has added functionality.

   New syntax:  DEL [n|n m|n *|n LAST|*|* n|* LAST|LAST]

   DEL now deletes one, more than one, or a range of lines from
   the SQL buffer.


 - If you fail to log in successfully to SQL*Plus because your username or
   password is invalid, or some other reason, SQL*Plus now returns an
   error status corresponding to an EXIT FAILURE command.


 - The PRINT command now has the option of printing multiple variables in
   the same command.

   New syntax:  PRI[NT] variable ...


 - The SET AUTOCOMMIT command has a new option.

   New syntax:  SET AUTO[COMMIT] {OFF|ON|IMM[EDIATE]|n}

   SET AUTOCOMMIT n commits pending changes to the database after
   Oracle executes n INSERT, UPDATE or DELETE commands or PL/SQL blocks.
   n is reset to zero after:  n INSERT, UPDATE or DELETE commands or
   PL/SQL blocks; a commit; a rollback; or a SET AUTOCOMMIT command.

   Note:  A PL/SQL block is regarded as one transaction, regardless of
   the actual number of SQL commands contained within it.


 - The SET command now has an AUTOPRINT clause.

   New syntax:  SET AUTOP[RINT] {OFF|ON}

   The default is OFF.  The AUTOPRINT clause sets whether SQL*Plus
   automatically displays all bind variables referenced in a
   successful PL/SQL block or used in an EXECUTE command.  OFF does
   not automatically display, ON does.


 - The SET command now has a COLSEP clause.

   New syntax:  SET COLSEP { |text}

   The COLSEP clause sets the text to be printed between SELECTed
   columns.  If the COLSEP variable contains blanks or punctuation
   characters, you must enclose it with single quotes. The default
   is a single space.

   In multi-line rows, the column separator does not print between
   columns that begin on different lines.  The column separator does not
   appear on blank lines produced by BREAK ... SKIP n and does not
   overwrite the record separator.

   The SET SPACE command is obsoleted by SET COLSEP, but remains
   valid for compatibility.


 - The SET command now has an EDITFILE clause.

   New syntax:  SET EDITF[ILE] file_name[.ext]

   The EDITFILE clause sets the default file name for the EDIT command.
   You can include a path and/or file extension.  The default file name
   and maximum file name length are restricted by the conventions of
   your operating system.


 - The SET command now has a TRIMSPOOL clause.

   New syntax:  SET TRIMS[POOL] {ON|OFF}

   SET TRIMSPOOL OFF is the default.  The TRIMSPOOL clause
   determines whether SQL*Plus allows trailing blanks at the end of
   each spooled line.  ON removes blanks at the end of each line.
   OFF allows SQL*Plus to include trailing blanks.  TRIMSPOOL ON
   does not affect displayed output.


 - The UNDEFINE VARIABLE command now has the option of undefining multiple
   user variables in the same command.

   New syntax:  UNDEF[INE] variable ...


 - The VARIABLE command now has a REFCURSOR clause.

   New syntax:  VAR[IABLE] [variable {NUMBER|CHAR|CHAR (n)|VARCHAR2 (n)|
                   REFCURSOR}]

   The REFCURSOR clause creates a variable of type REFCURSOR.

   Purpose:

   SQL*Plus REFCURSOR bind variables may be used to reference PL/SQL 2.2
   Cursor Variables allowing PL/SQL output to be formatted by SQL*Plus.
   Refer to the PL/SQL 2.2 documentation for more information about
   PL/SQL REF CURSOR cursor variables.


   Usage Notes:

   When you execute a VARIABLE command, SQL*Plus opens a cursor for
   each REFCURSOR bind variable.  SQL*Plus closes the cursor after
   completing a PRINT statement for that bind variable, or on exit.
   Subsequent PL/SQL blocks referencing the REFCURSOR bind variable
   in an OPEN ... FOR statement will automatically open the cursor.
   Refer to your PL/SQL documentation for information on the
   auto-open feature.

   SQL*Plus formatting commands such as BREAK, COLUMN, COMPUTE and SET
   may be used to format the output from PRINTing a REFCURSOR

   A REFCURSOR bind variable may not be PRINTed more than once without
   re-executing the PL/SQL OPEN ... FOR statement.

   Examples:

   To fetch the contents of the DEPT table:

       SQL> variable a refcursor
       SQL> begin
         2    open :a for select * from dept order by deptno;
         3  end;
         4  /

       PL/SQL procedure successfully completed.

       SQL> print a

           DEPTNO DNAME          LOC
       ---------- -------------- -------------
               10 ACCOUNTING     NEW YORK
               20 RESEARCH       DALLAS
               30 SALES          CHICAGO
               40 OPERATIONS     BOSTON



   To produce a report listing individual salaries and compute the
   departmental and total salary cost:

       SQL> variable rc refcursor
       SQL> declare
         2    type empsaltype is record (dname varchar2(14),
         3                               ename varchar2(10),
         4                               sal   number(7));
         5    type RCT is ref cursor return empsaltype;
         6    loc_rc RCT;
         7  begin
         8    loc_rc := :rc;
         9    open loc_rc for select dname, ename, sal
        10                    from emp, dept
        11                    where emp.deptno = dept.deptno
        12                    order by emp.deptno, ename;
        13  end p;
        14  /

       PL/SQL procedure successfully completed.

       SQL> set pagesize 100 feedback off
       SQL> ttitle left '*** Departmental Salary Bill *** ' skip 2
       SQL> column sal format $999,990.99 heading 'Salary'
       SQL> column dname heading 'Department'
       SQL> column ename heading 'Employee'
       SQL> compute sum label 'Subtotal:' of sal on dname
       SQL> compute sum label 'Total   :' of sal on report
       SQL> break on dname skip 1 on report skip 1
       SQL> print rc

       *** Departmental Salary Bill ***

       Department     Employee         Salary
       -------------- ---------- ------------
       ACCOUNTING     CLARK         $2,450.00
                      KING          $5,000.00
                      MILLER        $1,300.00
       **************            ------------
       Subtotal:                    $8,750.00

       RESEARCH       ADAMS         $1,100.00
                      FORD          $3,000.00
                      JONES         $2,975.00
                      SCOTT         $3,000.00
                      SMITH           $800.00
       **************            ------------
       Subtotal:                   $10,875.00

       SALES          ALLEN         $1,600.00
                      BLAKE         $2,850.00
                      JAMES           $950.00
                      MARTIN        $1,250.00
                      TURNER        $1,500.00
                      WARD          $1,250.00
       **************            ------------
       Subtotal:                    $9,400.00

                                 ------------
       Total   :                   $29,025.00



A.2. Modified Features

  Version 3.2.2.0.0

 - The SET PAGESIZE command syntax has changed.

   New syntax:  PAGES[IZE] {24|n}

   The default number of lines per page is now 24.

A.3. Fixed Bugs

  Numbers in parentheses following the problem description refer to bug
  numbers in the Oracle Bug Database.


  Version 3.2.2

  - The COPY command now copies columns of type CHAR and VARCHAR2 to
    each other without need for SET COPYTYPECHECK OFF (235582)

  - Some memory access errors using COPY to APPEND to a nonexistent table
    have been fixed (240463)

  - Fixed problems with some DESCRIBE statements using synonyms (238437,
    233866, 215395)

  - Fixed problems with some DESCRIBE statements using database links (191822,
    170340, 215138, 227832)

  - Fixed problems with DESCRIBE mixed case object or object name or object
    name with white space (3785)

  - A small memory leak when failing to connect to the server is
    fixed (243202)

  - Using SERVEROUTPUT no longer gives ORA-1044 when the character set
    of SQL*Plus and the server are different (206332)

  - A problem with the potential to display extra characters in COMPUTE
    fields has been fixed (86460)

  - Using a VARIABLE command twice on the same REFCURSOR variable
    no longer gives ORA-1001 when executing the PL/SQL block (270824)

  - An initialization problem with "SET AUTOCOMMIT n" has been fixed (251302)

  - A parsing error using a semicolon to end some forms of the EXIT
    command has been fixed (250834)

  - A parsing problem introduced in 3.1.3.4 using strings with
    embedded quotes has been fixed (263477, 233182)

  - A word wrapping problem in LONG datatype columns when
    LONGCHUNKSIZE is less than LONG has been fixed.  (149497, 198432)

  - A problem with fetching a LONG column value after fetching a null
    LONG has been fixed. (208894)

  - Some internal coding changes occurred (244385, 251569)


  Version 3.2.1.1 Beta

  - Substitution variables (e.g. &) now work in the following
    commands: @, @@, PRINT, EDIT, TIMING, and the operating system
    specific HOST escape character (e.g. ! on UNIX and $ on VMS)
    (8251, 69688, 169036, 215477, 215741)

  - Prompts used in the ACCEPT command no longer require '%%' to print
    a single '%' (137362)

  - The timing output from SET TIMING ON now appears after the
    feedback message for non-SELECT SQL statements (215305)

  - A problem causing truncation of columns using NEWLINE or FOLD_BEFORE
    to make multi-line records no longer occurs (217450)

  - Some memory access errors when computing values on truncated columns
    are fixed (226569, 229294)

  - The commit message from DML with SET AUTOCOMMIT ON is not
    displayed when SET FEEDBACK OFF is used (235008)

  - Computing MAX and MIN on CHAR and VARCHAR columns now works (227039)

  - A memory problem no longer occurs when a HOST command fails while
    using SQL*Plus with multibyte NLS languages (229118)

  - Multibyte NLS columns with FOLD_AFTER and a small LINESIZE now wrap
    correctly (230720)

  - EDIT filenames now follow the same name restrictions as SPOOL
    filenames (231154)

  - UNDEFINE now accepts more than one variable to undefine (197239)

  - Some obsolete system variables have been removed from the SHOW
    command (7656, 178589)

  - Some text has been moved to the message files (221005, 223143, 5658)

  - Some internal coding changes occurred (219745, 226881)


  Version 3.1.3.5

  - RUN can now be disabled using the PRODUCT_USER_PROFILE table (200420)

  - A problem introduced in 3.1.1.4 causing NEW_VALUE variables to be
    set to NULL when no rows are returned has been fixed (206388)

  - DESCRIBE <procedure> now works on PL/SQL procedures having at
    most 255 parameters.  Previously the limit was 128.  (159702)

  - DESCRIBE <procedure> now correctly shows IN/OUT parameters as
    IN/OUT and not OUT (209443)

  - A problem causing blank headings for columns consisting of a large
    number of functions and no explicit headings has been fixed (110650)

  - The correct error is now displayed when the maximum number of
    nested command files started with '@' is reached (32376)

  - NOPRINT columns used at the end of the select list no longer cause
    premature column wrapping or an extra blank line to be produced for
    small values of LINESIZE (12415)

  - Duplicate BTITLEs no longer occur when EMBEDDED is ON and HEADING
    is OFF (214876)

  - A problem printing output from the CHR function in multibyte
    languages has been fixed (200720)

  - SQL*Plus no longer aborts selecting a NULL value from a LONG
    column when using a multibyte character set (210628)

  - The server disconnection method has been altered internally (198254)

  - Some internal coding changes occurred (56806, 193823, 214082)


  Version 3.1.3.4

  - COMPUTE STD and COMPUTE VARIANCE now correctly return 0 instead of
    NULL.  COMPUTE SUM now correctly returns NULL instead of 0 (174855)

  - All COMPUTE results now use the SET NULL value.  Previously only
    MAX and MIN did (190266)

  - The SPOOL file name restrictions which disallowed valid NLS characters
    have been relaxed (186003)

  - Truncating multibyte NLS characters in LONG columns no longer causes
    a core dump in a particular situation (186004)

  - Some strings combining single and multi-byte NLS characters in
    LONG fields are now completely fetched (194976)

  - A problem with NLS data stored in a database using a single byte
    character set and selected with NLS_LANG in a multibyte character
    set has been fixed (195870)

  - ALTER SESSION SET NLS_DATE_FORMAT = 'J' no longer causes SQL*Plus
    to abort (197422)

  - The script to create the HELP table now uses a STORAGE clause (160860)

  - The delimiter of the HELP system data file has been changed (157324)

  - Strings (such as TTITLEs) containing variable names followed by a
    quote and then whitespace, for example, VAR' TEXT', are now parsed
    correctly (194855)

  - The COPY command no longer gives N modulus 65536 for the number of
    rows selected, inserted and committed (45597)

  - BREAK ... NODUPLICATES no longer gives duplicates when PAGESIZE is
    zero (188361)

  - Exiting SQL*Plus after using COLUMN '' <option> no longer causes a core
    dump (197381)

  - COLUMN X HEADING '' now gives a null heading and COLUMN X NULL ''
    gives a null value correctly (197601)

  - A problem with SET SERVEROUTPUT that sometimes caused an ORA-6512 when
    displaying more than 126 lines has been fixed (179344)



B. New or Modified Requirements
-------------------------------

        Requirements for SQL*Plus have not changed.


C. New or Modified Installation Procedures
------------------------------------------
THIS SECTION REFERS TO FIRST-TIME INSTALLATION OF THE PRODUCT.

        No changes to the installation procedure.

D. New or Modified Upgrading Procedures
---------------------------------------
THIS SECTION REFERS TO INSTALLING THIS VERSION OF AN ALREADY
INSTALLED PRODUCT.

        No changes to the upgrade procedure.

E. Restrictions and Workarounds
-------------------------------

        No known restrictions.

